如何做品牌推广网站,工商注册核名查询系统官网,为什么亿唐网不做网站做品牌,创办网站我最近开了几个专栏#xff0c;诚信互三#xff01; |||《算法专栏》#xff1a;#xff1a;刷题教程来自网站《代码随想录》。||| |||《C专栏》#xff1a;#xff1a;记录我学习C的经历#xff0c;看完你一定会有收获。||| |||《Linux专栏》#xff1… 我最近开了几个专栏诚信互三 |||《算法专栏》刷题教程来自网站《代码随想录》。||| |||《C专栏》记录我学习C的经历看完你一定会有收获。||| |||《Linux专栏》记录我学习Linux的经历看完你一定会有收获。||| |||《C#专栏》记录我复习C#的经历深度理解查漏补缺不定期更新。||| |||《计算机网络专栏》记录我学习计算机网络看完你一定会有收获。||| UDP/TCP协议解析 UDP报文格式UDP面向数据报解析TCP报文格式及字段解析TCP面向字节流解析TCP三次握手/四次挥手解析TCP为什么需要三次握手TCP为什么要四次挥手三次握手和四次挥手特点 UDP报文格式
UDP报文格式如下。 UDP首部字段有八个字节。 { src port : dest port : len : 校验和} 1).其中len字段代表整个报文长度16个比特位代的范围[0 — 65,535]字节大约为64K。 报头的长度就是保证UDP是面向数据报的原理从缓冲区中读取数据都可以通过头部字段的len进行一些计算让每次从缓冲区中读出的都是UDP的整个数据报。
UDP面向数据报解析
面向数据报及通过缓冲区读入的内容是以整个数据报为单位进行读取的。 报头的长度就是保证UDP是面向数据报的原理从缓冲区中读取数据都可以通过头部字段的len进行一些计算让每次从缓冲区中读出的都是UDP的整个数据报。
TCP报文格式及字段解析
TCP报文格式如下。 1).对于源端口和目的端口没有可讲解的。 2).序号在TCP连接刚建立的时候OS会随机生成一个序号序号 确认序号 len(数据长度) - 1序号只有在存在数据时或者在三次握手以及四次挥手的SYN段RST段FIN段时才有意义。 3).确认号确认号代表在该号之前的所以数据都以及收到确认号 收到的序号 1。 4).数据偏移该字段只有4位范围为[0,15]其代表了整个报头的大小但是该大小只是一个数字确定的大小需要在该大小上 * 4。 5).6个标志位URG紧急指针ACK确认位PSH快速交付位RST重新设置SYN同步位FIN终止位这六种比特位会在以下介绍。 6).窗口该字段是用来进行流量控制的主要字段其表示的是接收窗口剩余字节数量。 7).校验和用于校验整个TCP数据报是否有错误。 8).紧急指针紧急指针用于指向TCP数据字段中的某个位置该紧急指针的长度为一个字节让该位置的字节会被上层优先获得从而判断接下来该怎么办。
TCP面向字节流解析
面向字节流及在传输过程中报文和报文之间没有明显的分割对于发送端来说发送的数据是一个一个字节对于接收方来说接收的也是一个一个字节所以接收方通过接口接收到的数据可能并非是一个完整的报文。
TCP三次握手/四次挥手解析
TCP建立链接是通过三次握手来实现的TCP三次握手示意图如下。
1).首先服务端调用Listen接口服务器阻塞在Listen接口处进入LISTEN状态等待客户端建立链接。 2).其次先生成随机确认号同时客户端调用connect接口发送SYN报文此时客户端进入SYN_SENT状态。 3).在服务端接收到SYN报文同时服务端发送SYN | ACK报文此时服务端处于SYN_RECV状态。 4).随后客户端发送ACK报文此时客户端的链接以及建立成功。 5).最后在服务端收到ACK报文后此时服务端的链接建立成功。 TCP四次挥手示意图如下。 1).首先由主动关闭通信的一端发送FIN报文同时进入FIN_WAIT-1状态。 2).其次在被动关闭端收到FIN报文后进入CLOSE_WAIT状态在CLOSE_WAIT状态中被动关闭端会将缓冲区的所有数据都发送到网络中。 3).再次缓冲区的数据发送到网络中后被动关闭端会发送FIN | ACK报文同时被动关闭端进入LAST_ACK端。 4).主动关闭端收到FIN | ACK报文后主动关闭端发送ACK报文主动关闭端进入TIME_WAIT状态该状态需要两个MSL时间。 2MSL时间中是为了让主动关闭端等待CLOSE_WAIT状态中发送的报文到达主动关闭端。 同时关闭socket。 5).被动关闭端在接收到ACK报文后被动关闭端关闭socket。
TCP为什么需要三次握手
TCP是面向链接的传输同时TCP是全双工通信所谓的面向链接并不是真正的建立链接该链接只是抽象的链接同时需要帮助TCP的全双工通信这就要求服务端能收到客户端的报文同时客户端能收到服务端的报文而当客户端收到SYN | ACK报文后客户端的链接就已经建立完毕当服务端收到ACK后服务端的链接就已经建立完毕就已经保证了面向链接以及全双工这两种特点。
TCP为什么要四次挥手
由于TCP是面向链接且全双工的四次挥手的目的是为了关闭双方的通信链接抽象链接所以主动关闭方发送FIN报文被动关闭方发送ACK报文关闭一条链接随后被动关闭方发送FIN | ACK报文同时主动关闭方发送ACK报文关闭一条链接自此两条链接被关闭。
三次握手和四次挥手特点
如图。 在TCP中存在一种叫做捎带应答的机制及需要发送ACK报文只需要将报头的ACK位制为1即可但是TCP的数据部分却没有被设置所以我们将多种状态信息或数据信息都装载在同一个TCP报文中发送出去就是捎带应答。 所谓的三次握手实际上就是将ACK报文和SYN报文这两种状态信息都放在一个TCP报文中捎带应答了。 实际上可以将SYN和ACK分开分开后所谓的三次握手本质就是四次握手了。