2.2连接服务器
-
连接的意思
- 创建嵌套字之后,浏览器调用connect,协议栈就会将客户端的嵌套字与服务端的嵌套字进行连接
- 连接就是通信双方交换控制信息。
- 控制信息:控制数据收发操作所需要的信息(IP地址、端口等)
- 缓冲区:执行数据收发操作时,临时存放收发的数据的内存空间。
-
复制保存控制信息的头部
-
控制信息分为两类:
- 头部记录的信息
- 嵌套字(协议栈中的内存空间)记录的信息。
-
TCP的头部格式
-
字段名称 长度(比特) 含义 发送方端口号 16 发送网络包的程序的端口 接收方端口号 16 网络包接收方程序的端口号 序号(发送数据的顺序编号) 32 发送方告知接收方该网络包发送的数据相当于所有发送数据的第几个字节 ACK号(接受数据的顺序编号) 32 接收方告知发送方已经收到了所有数据的第几个自己。 数据偏移量 4 表示头部的长度,也可以认为数据的部分起始位置 保留 6 该字段为保留,现在未使用 控制位 6 每个比特分别表示的控制信息含义 URG:表示紧急指针字段有效。 ACK:表示接受数据序号字段有效,一般表示数据已被接受方收到。 PSH:通过flush操作发送的数据。 RST:强制断开连接,用于异常终止的情况 SYN:发送方和接收方相互确认序号,表示连接操作 FIN:表示断开连接 窗口 16 接收到改制发送方窗口大小(确认可一起发送的数据量) 校验和 16 用来检测是否出现错误 紧急指针 16 表示应急处理的数据位置
-
-
-
连接操作的具体过程
-
应用程序调用socket库中的connect(<描述符>、<服务端的ip地址><服务端的端口号>)
-
信息传递给协议栈的TCP模块
-
TCP模块处创建表示连接控制信息的头部
-
通过TCP头部中的发送方和接收方的端口号可以找到要连接的嵌套字
- TCP模块将信息传递给IP模块并委托他进行发送
- ip模块执行网络包进行发送
-
网友评论