传输层协议
tcp/udp协议
TCP/IP协议族的传输层协议
tcp特性
- 1.工作在传输层
- 2.面向连接协议
- 3.全双工协议
- 4.半关闭(四次挥手)
- 5.错误检查
- 6.将数据打包成段,排序 (分片)
- 7.确认机制
- 8.数据恢复,重传
- 9.流量控制,滑动窗口
udp特性
- 工作在传输层
- 提供不可靠的网络访问
- 非面向连接协议
- 有限的错误检查
- 传输性能高
- 无数据恢复特性
TCP报文段
序号:
是随机生成的(首次进行数据包沟通时随机生成的
A电脑——————> B电脑
a会随机产生一个 序号为x的数据包发给b
A电脑<——————B电脑
b电脑收到以后 会随机产生一个回复包随机产生序号y
在 回复包中会产生一个 新的字段 确认号:规定了a下一次发送的序号 x+1 不允许随机产生
控制位:
URG(紧急位): 表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer) 只有当URG=1时才有效
ACK(确认位):表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走教据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接,或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
SYN(同步位):在建立连接时使用,用来同步序号,当SYN=1,ACK时,表示这是一个请求建立连接的报文段,当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕,如果FIN=1,即告诉对方:"我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
三次握手
三次握手的过程
pc1想和pc2建立连接
pc1会发送syn=1 序号为随机数x的数 报文给pc2
pc2收到pc1的报文会回复一个syn+ack报文给pc1 该报文 序号为随机生成的y 确认号为x+1 (ack=x+1) syn(同步位)=1 ACK(确认位)=1
pc1收到pc2同意建立连接的报文 ,会恢复一个ACK 报文,该报文 序号为x+1 确认号为 y+1 ACK=1
pc1和pc2就建立连接了
有限状态机(扩展)
1.CLOSED 没有任何连接状态
2.LISTEN 侦听状态,等待来自远方TCP端口的连接请求
3.SYN-SENT 在发送连接请求后,等待对方确认
4.SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
5.ESTABLISHED 代表传输连接建立,双方进入数据传送状态
6.FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
7. FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求8.TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
9.CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
10.LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失1.CLOSING 双方同时尝试关闭传输连接,等待对方确认