TCP UDP

158 阅读3分钟

tcp特性

1. 工作在传输层 

2. 面向连接协议 

3. 全双工协议

4. 半关闭 

5. 错误检查 

6. 将数据打包成段,排序

7. 确认机制

8. 数据恢复,重传 

9. 流量控制,滑动窗口 

端口号

端口号:确定进程

端口号有三类

1.规定好的 知名的端口号 80 443 人为规定 

2.系统随机分配(客户端 去访问服务端 系统会自动 随机分配一个端口号给你) 

3.人类自由使用 (写)

tcp报文格式

控制位

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=0时,表示这是一个请求建立连 接的报文段;当SYN=1,ACK=1时,表示对方同意建 立连接。SYN=1,说明这是一个请求建立连接或同意 建立连接的报文。只有在前两次握手中SYN才置为1, 带SYN标志的TCP报文段称为同步报文段

 FIN(断开位):表示通知对方本端要关闭连接了, 标记数据是否发送完毕。如果FIN=1,即告诉对方: “我的数据已经发送完毕,你可以释放连接了”,带FIN 标志的TCP报文段称为结束报文段

三次握手

pc1要和pc2连接,pc1会发送一个请求连接的报文,报文包括报文的序号(seq=x)和同步位(SYN=1,ACK=0)

pc2收到消息后回复一个报文,报文包括报文的序号(seq=y)和ack确认号( 我希望你下一次发送 x+1 序号的报文 给你 )和同意连接的控制位(SYN=1,ACK=1)

pc1收到报文后会发送一个x+1报文和希望下次发送y+1的序号报文给我(Ack=y+1)和确认位(ACK=1)