目录
TCP协议(传输控制协议)
TCP特性
1.工作在传输层
2.面向连接协议
3.全双工协议
4.半关闭
5.错误检查
6.将数据打包成段,排序
7.确认机制
8.数据恢复,重传
9.流量控制,滑动窗口
端口号
作用:确定进程
分类:
1.规定好的 知名的端口号 (80 443 人为规定)
2.系统随机分配(客户端 去访问服务端 系统会自动 随机分配一个端口号给你)
3.人类自由使用(写)
访问服务器
源端口、目标端口:
计算机上的进程要和其他进程通 信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标 端口,就可以知道是哪两个进程需要通信。
序列号:表示本报文段所发送数据的第一个字节的编号。
确认号
:(
ack
)表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。
数据偏移/首部长度
:表示
TCP
报文段的首部长度
控制位
URG
(紧急位)
:表示本报文段中发送的数据是否包 含紧急数据。后面的紧急指针字段只有当URG=1
时才有效
ACK
(确认位):
表示是否前面确认号字段是否有效
PSH
(急切位):提示接收端应用程序应该立即从 TCP接收缓冲区中读走数据,为接收后续数据腾出空间
RST
(重置位):
如果收到一个
RST=1
的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须 释放连接,然后再重新建立连接。
SYN
(同步位):
在建立连接时使用,用来同步序号
FIN
(断开位):
表示通知对方本端要关闭连接了,标记数据是否发送完毕
窗口大小:表示现在允许对方发送的数据量
校验和:提供额外的可靠性紧急指针
选项部分:
其最大长度可根据
TCP
首部长度进行推算
TCP3次握手
第一步 :
pc1
会发送一个
建立连接的请求报文
1.
报文的序号(
seq=x
)
2.
同步位(请求建立连接关系:
SYN=1 ACK=0
控制 位:当前两台机器处于什么状态?
建立连接
处于 连接
断开连接
)
第二步:
当
pc2
收到消息以后
是不是要回复一个报文
1.
报文的序号 (
seq=y
)
2. ack
确认号(我希望你下一次发送 x+1
序号的报文 给你
)
3.
控制位
SYN=1 ACK=1
请求建立连接
pc2
同意建 立连接
第三步:收到
pc2
同意建立连接的报文后
1.
会发送一个
x+1
报文
2.
会告诉对方 我希望你下次 发送
y+1
的序号报文给我
3.
最后 将
ACK=1
封装进去
有限状态机
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
被动关闭
,
等待最后一个关闭传输连接确 认,并等待所有分组消失
11. CLOSING
双方同时尝试关闭传输连接,等待对方确认
UDP协议(用户数据报协议)
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
![](https://i-blog.csdnimg.cn/blog_migrate/0f1a07e2120e3dd883df2de778158bbc.png)