当前位置:网站首页>HCIE学习记录——数据封装与常用协议(TCP/UDP)
HCIE学习记录——数据封装与常用协议(TCP/UDP)
2022-08-02 14:14:00 【机器学习小弟】
前言
本文主要介绍数据封装过程与常用的协议。
一、数据封装过程
二、传输层协议——TCP、UDP
1.TCP协议
一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。
报文格式
Seq number:序号,表示传输第几个数据段
Ack number:确认号,收到多少数据段
SYN:同步请求,建立连接
ACK:代表收到对方数据段的状态。
FIN:结束,断开连接。
TCP的连接——三次握手
任何基于TCP的应用,电脑需要与服务器进行连接,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
1.请求端PC——>服务器端。SYN置位,请求建立连接。Seq number为产生的随机序号a,Ack number为0(尚未进行连接)。
2.服务器端——>请求端PC。SYN置位,请求建立连接;ACK置位,确认收到请求。Seq number为产生的随即序号b,Ack number为a+1(对方序号+1)。
3.请求端PC——>服务器端。ACK置位,确认收到请求。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
TCP连接建立。
第三次传输有什么作用?
答:当网络质量差时,前面的数据段可能会延迟回复,如果没有第三次传输确认,会导致服务器端连接一直打开,造成资源浪费。
TCP的关闭——四次挥手
当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
1.请求端PC——>服务器端。FIN置位,ACK置位。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
2.服务器端——>请求端PC。ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
3.服务器端——>请求端PC。FIN置位,ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
4.请求端PC——>服务器端。ACK置位。Seq number为a+2,Ack number为b+2。
TCP连接断开。
为什么服务器端要分两次传输置位信息呢?
答:第一次传输是确认收到断开连接请求,但是不确定自身是否也要断开连接(保证自身数据段的完整性)。第二次传输则是确认自身也要断开连接。
2.UDP协议
一种简单的无连接的传输层协议,由IETF的RFC 768定义。
报文格式
边栏推荐
猜你喜欢
随机推荐
C#高级教程
剑指offer:在O(1)时间删除链表结点
第二十六章:二维数组
Exotic curiosity-a solution looking - bit operations
戴森球计划这个游戏牛逼
第二十八章:解题技巧
implement tcp bbr on ns3 (在ns3上实现TCP BBR)
分布式一致性协议-Paxos
LeetCode 2343. 裁剪数字后查询第 K 小的数字 暴力+语法考察
移动拷贝构造函数
Qt | 串口通信 QSerialPort
远程连接Ubuntu中的Mysql
Run ns3 with multiple processes
CDH(computational Diffie-Hellman)问题以及与离散对数、DDH问题的区别
net start mysql 服务名无效。
消息队列的技术选型
5款最好用的免费3D建模软件(附下载链接)
EastWave:垂直腔表面激光器
深入理解Mysql索引底层数据结构与算法
change the available bandwidth of tcp flow dynamically in mininet