- 创建套接字:
协议栈的内部结构、套接字的实体,以及创建套接字的操作过程
- 连接服务器:
“连接”具体是进行怎样的操作,在这个过程中协议栈到底是如何工作的,
以及客户端和服务器是如何进行交互的。
- 收发数据:
在这个阶段, 协议栈会将从应用程序收到的数据切成小块并发送给服务器。协议栈还需要确认切分出的每个包是否已经送达服务器,对于没有送达的包要重新发送一次。
- 从服务器上断开连接并删除套接字:
断开操作的本质是当消息收发完成后客户端和服务器相互进行确认的过程,但不止于此。
- IP和以太网的包收发操作:实际的网络包是如 何进行收发的。
- UDP协议收发数据的操作:和TCP的差异,和它存在的必要性。
windows的netstat命令:
包:
2.12 套结字的实体
一个分配的内存空间:内含通信控制信息(用于控制通信的信息),如IP, port, 通信的state
2.13 socket
浏览器向socket程序发出委托,socket创建套接字。
- 分配内存
- 写入控制信息
- 告诉browser这个套接字的描述符(类似内存空间的标签)
2.2 连接server,( 也叫准备工作)
实际就是指收发两端发送数据前的准备工作,包括创建内存,用于临时存放数据。
connect:和server交换控制信息并在套接字中记录下拉,并准备之后的操作。
控制信息有2类:
- 头部信息:整个通信过程都需要TCP, IP, MAC以太
- 套接字中的信息:控制协议栈的操作。
2.3收发data
TCP协议也叫做三次握手策略,使用了TCP的flag: SYN, ACK
- 发送端首先发送一个带有syn标志的数据包给对方
- 接收端收到后,回传一个带有syn/ack标志的数据包,保湿传达确认信息。
- 最后发送端再回传一个带有Ack标志的数据包,代表握手结束。
ACK(acknowledgement)
ACK号 = 序号 + 长度