【好书精读】网络是怎样连接的 之 委托协议栈发送消息

news2024/11/24 16:02:19

 (该图由AI制作 学习AI绘图 联系我)

目录

数据收发操作概览

创建套接字阶段

连接阶段:把管道接上去

通信阶段:传递消息

断开阶段:收发数据结束


数据收发操作概览

知道了 IP 地址之后 就可以委托操作系统内部的协议栈向这个目标 IP地址发送消息
要发送给 Web 服务器的 HTTP 消息是一种数字信息 digital data
收发数字信息这一操作不仅限于浏览器,对于各种使用网络的应用程序来说都是共通的。

和向 DNS 服务器查询 IP 地址的操作一样 这里也需要使用 Socket 库中的程序组件 不过 查询 IP 地址只需要调用一个程序组件就可以了 而这 里需要按照指定的顺序调用多个程序组件

建立管道的关键在于管道两端的数据出入口 这些出入口称为 套接字

  1. 服务器一方先创建套接字然后等待客户端向该套接字连接管道
  2. 客户端也会先创建一个套接字然后从该套接字延伸出管道最后管道连接到服务器端的套接字上
  3. 当双方的套接字连接起来之后通信准备就完成了
  4. 将数据送入套接字就可以收发数据了
  5. 当数据全部发送完毕之后 连接的管道将会被断开管道断开后 套接字也会被删除
都是由操作系统中的协议栈来执行的

创建套接字阶段

应用程序 浏览器 委托收发数据的过程

首先是套接字创建阶段

Socket 库中的 socket 程序组件 )。

调用 socket 之后 控制流程会转移到 socket 内部并执行创建套接字的操作
套接字创建完成后 协议栈会返回一个描述符 应用程序会将收到的描述符存放在内存中
出示描述符 ,协议栈就能够判断出我们希望用哪一个套接字来连接或者收发数据了
应用程序是通过“描述符”这一类似号码牌的东西来识别套接字的。
描述符:应用程序用来识别套接字的机制
IP 地址和端口号:客户端和服务器之间用来识别对方套接字的机制

连接阶段:把管道接上去

需要委托协议栈将客户端创建的套接字与服务器那边的套接字连接起来
应用程序通过调用 Socket 库中的名为 connect 的程序组件来完成这一操作 )。
当调用 connect 协议栈就会执行连接操作 当连接成功后 协议栈会将对方的 IP 地址和端口号等信息保存在 套接字中 这样我们就可以开始收发数据了

通信阶段:传递消息

通过 Socket 库委托协议栈来完成: 将数据送入套接
应用程序需要在内存中准备好要发送的数据: 根据用户输入的 网址生成的 HTTP 请求消息就是我们要发送的数据
调用 write时 需要指定描述符和发送数据 图 
当消息返回后 ,需要执行的是接收消息的操作:Socket 库中的 read 程序组件委托协议栈来完成的 ③’) 需要指定用于存放接收到的响应消息的内存地址 这一内存地址称 为接收缓冲区

断开阶段:收发数据结束

要调用 Socket 库的 close 程序组件进入断开阶段(图 ④)

套接字之间的管道会被断开 套接字本身也会被删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot高阶篇笔记

一、Spring Boot整合Redis缓存 JSR-107、Spring缓存抽象、整合Redis 1、JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。 • CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应…

打造Top级期货交易系统!成为投资高手!

交易系统在期货市场中得到广泛的应用,技术分析是期货交易系统的重要组成部分之一。技术分析是依靠市场数据来预测未来期货行情的一种方法,通过对期货历史市场信息进行形态分析和统计计算等手段,获取市场行情的走向,为后续的期货交…

初识MFC第一天

文章目录 前言一、初识MFC二、初始相关API附录 前言 刚开始进入Win32开发时,会发现一些变量类型似乎在C语言中未曾见过。其实这些变量类型或是与C/C已有的数据类型相近的,是通过C语言的原始类型重新定义而成的。引入这些数据类型的主要目的是为了便于程…

2023届网课生就业难:挑战与策略探析

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

One-Class SVM详解

简介 One-Class SVM(Support Vector Machine)是一种无监督学习算法,用于异常检测和离群点检测。它的目标是通过仅使用正常数据来建模,识别出与正常模式不同的异常数据点。 One-Class SVM的工作原理如下: 数据映射&a…

潮玩盲盒APP系统开发

盲盒抽奖App软件界面应该包括以下几个部分: 首页:首页需要展示正在进行的抽奖活动、热门盲盒商品和刚刚开奖的中奖名单,让用户快速了解当前的热门活动和优惠。 抽奖详情页:抽奖详情页需要展示抽奖主题、奖品图片、中奖规则…

高频前端面试题汇总之计算机网络篇

一、HTTP协议 1. GET和POST的请求的区别 Post 和 Get 是 HTTP 请求的两种方法,其区别如下: 应用场景: GET 请求是一个幂等的请求,一般 Get 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页的资源。而 P…

SAX解析XML返回对应格式的Map对象

前言 最近有一个解析大型xml的需求,xml大小7M,其中xml结构非常复杂,元素各种嵌套 不乏有元素下对象,元素下集合,集合下对象,集合下集合,兄弟节点,元素下对象下集合,同一元…

数字时代,你想成为一只“弱鸡”,还是一个“超级个体”?

电话延伸了人类的耳朵,屏幕延伸了人类的眼睛,汽车这样的交通工具延伸了人类的腿脚,人类的生存能力开始变得和技术相关,而这个趋势仍在加剧。 如今,Web3延伸了人的综合体验,AI延伸了人类的大脑,它…

MySQL(视图、存储过程与函数、流程控制、触发器)

第一章 视图 1 什么是视图 为了提高复杂的SQL语句的复用性和表的操作的安全性 ,MySQL数据库管理系统提高了视图特性,所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是视图并…

2023年前端面试汇总 - JavaScript

1. 数据类型 1.1. JavaScript有哪些数据类型,它们的区别? JavaScript共有八种数据类型,分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型: Symbol …

避开这12个压测误区保证有效压测

压测本质上其实就是经验的问题,至于技术我认为现在都是配套了,也有人配套的东西也搞不清,那还是经验的问题。提醒下,这篇对野路子玩压测的人蛮有用的。 一、压测的误区 首先讲压测误区,每个误区我会简单的总结下&…

作为超级自动化的重要先驱,流程挖掘正在成为组织运营标配

正在成为组织运营标配的流程挖掘,到底有哪些商业价值? 作为超级自动化的重要先驱,流程挖掘正在成为组织运营标配 文/王吉伟 AIGC正在影响越来越多的行业,流程挖掘领域亦不例外。 Mindzie首先宣布集成生成式AI,使用户…

带你详细了解Redis事务锁机制-加实列演示-上

Redis_事务_锁机制_秒杀 Redis 的事务是什么? 1、Redis 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行 2、事务在执行的过程中,不会被其他客户端发送来的命令请求所打断 3、Redis 事务的主要作用就是串联多个命令防止别的命令…

怎么学习和提升前端开发的能力? - 易智编译EaseEditing

要学习和提升前端开发的能力,您可以按照以下步骤进行: 掌握基础知识: 了解HTML、CSS和JavaScript的基本概念和语法。学习HTML用于创建网页结构,CSS用于样式设计和布局,JavaScript用于交互和动态效果。 学习框架和库&…

探讨太阳能热水器的安全隐患和雷电防护措施

太阳能热水器是指利用太阳光加热原理来获得热水的装置。随着科学技术的发展,太阳能热水器因其新颖、环保、节能且方便而深受消费者的喜爱,安装数量逐年增加。我国太阳能资源丰富,尤其是在广袤的西部中小城镇、农村地区,家家户户几…

NSSA实验和配置命令

1)拓扑 需求 2)需求:PC2和PC5互通 配置思路和配置命令 3)配置思路: 第一步:先让R1能够和PC5互通,要先配置静态路由 [R1] ip route-static 192.168.4.0 24 192.168.18.8 第二步:在R8上写去往PC1/PC2的路…

定长图文验证码模型训练

文章目录 自定义数据集生成模型代码计算均值和标准差训练代码测试集成功率计算推理测试 市面上常见的验证码识别方案包括: 基于规则的方案:这种识别方案针对一些特定类型的验证码(如数字、字母组合),利用编写规则的方式…

逛开发者集市啦,ShardingSphere 在亚马逊云科技中国峰会等你!

2023亚马逊云科技中国峰会将于6月27日-28日在上海世博中心盛大开幕。本次峰会以“共见价值成就”为主题,与合作伙伴展望云计算趋势及合作发展战略,分享行业解决方案,共同探讨协同销售策略和全新的 APN 计划,助力合作伙伴成就更多价…

计算机系统层次结构与操作系统和驱动的定义

一、程序分类 程序按其运行环境分为: 裸机程序:直接运行在对应硬件上的程序 应用程序:只能运行在对应操作系统上的程序 二、计算机系统的层次结构 计算机系统两种层次结构: 2.1 无操作系统的简单的两层结构 2.2 有操作系统的…