传输层协议快速入门
一、TCP协议
1、TCP协议的特点
- TCP是面向连接的、可靠的进程到进程通信的协议
- TCP提供全双工服务,即数据可在同一时间双向传输
- TCP报文段:TCP将若干个字节构成一个分组,叫报文段;TCP报文段封装在IP数据报中
2、TCP报文段
序号: 在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号
确认号: 期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到
**数据偏移:**TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位
六个控制位:
紧急位URG: URG=1时,表明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用
确认位ACK: ACK=1时确认号有效,在连接建立后所有发送的报文段都必须把ACK置为1
推送位PSH: PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满在线上交付
复位RST: RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接
同步位SYN: SYN=1时,表名是一个连接请求
终止位FIN: FIN=1时,表明此报文段发送方数据已发完,要求释放连接
窗口: 发送本报文段的一方的接收窗口,即现在允许对方发送的数据量
检验和: 检验首部+数据,检验时要加上12B伪首部,第四个字段为6
紧急指针: URG=1时才有意义,指出本报文段中紧急数据的字节数
选项: 最大报文段长度MSS、窗口扩大、时间戳、选择确认
二、TCP三次握手与四次挥手
1、TCP三次握手
TCP建立连接的过程称为三次握手
- 第一次握手:PC1向PC2发送请求连接(同步已发送状态)
- 第二次握手:PC2收到PC1的请求连接的信息后,然后给PC1发送消息,表示自己已经收到了,并且同意连接。(同步收到)
- 第三次握手:PC1收到PC2的信息后,还要给PC2发消息确认自己已经收到了(已建立链接)
2、TCP四次挥手
-
第一次挥手:PC1发送FIN/ACK给PC2,表示自己要断开连接。(终止等待-1)
-
第二次挥手:PC2收到PC1请求断开连接的消息后,要发送ACK报文给PC1,表示确认自己收到了信息。(关闭等待)
-
第三次挥手:PC2也要发送FIN/ACK给PC1,表示自己要断开连接.(终止等待-1)
-
第四次握手:PC1收到PC2请求断开连接的消息后,也要发送ACK报文给PC1,然后断开连接。(时间等待)
三、UDP协议
1、UDP协议的特点
- 无连接、不可靠的传输协议
- 花费的开销小
2、UDP报文的首部格式
- UDP长度:用来指出UDP的总长度,为首部加上数据
- 校验和:用来完成对UDP数据的差错校验,他是UDP协议提供的唯一的可靠机制
3、常用的UDP端口号及其功能
端口 | 协议 |
---|---|
69 | TFTP(简单文件传输协议) |
111 | RPC(远程过程调用) |
123 | NTP (网络时间协议) |
四、总结
三次握手:
1.发送方向接收方发送SYN请求
⒉接收方接收到此请求后会主动回复一个ACK,并且同时也发送一个SYN请求
3.发送方接收到接收方发来的SYN请求后,给出一个ACK确认
四次挥手:
1.发送方向接收方发送一个FIN请求
⒉接收方收到此请求后给出一个ACK确认(半关闭状态)
3.接收方发送一个FIN请求给发送方
4.发送方收到接收方的FIN请求后,回复一个ACK