手机网站开发建设方案,wordpress内容页列表显示,广元网站制作,南通网站建设方案托管前言#xff1a; 学习视频#xff1a;中科大郑烇、杨坚全套《计算机网络#xff08;自顶向下方法 第7版#xff0c;James F.Kurose#xff0c;Keith W.Ross#xff09;》课程 该视频是B站非常著名的计网学习视频#xff0c;但相信很多朋友和我一样在听完前面的部分发现信… 前言 学习视频中科大郑烇、杨坚全套《计算机网络自顶向下方法 第7版James F.KuroseKeith W.Ross》课程 该视频是B站非常著名的计网学习视频但相信很多朋友和我一样在听完前面的部分发现信息量过大有太多无法理解的地方在我第一次点开的时候也有相同的感受但经过了一段时间项目的学习对计网有了更多的了解所以我准备在这次学习的时候做一些记录并且加入一些我的理解希望能够帮助到大家。 往期笔记可以看专栏中的内容 文章目录 3.2 多路复用与解复用3.2.1 TCP 的多路复用与解复用3.2.2 UDP 的多路复用与解复用 3.3 无连接传输UDP3.3.1 基本概念3.3.2 UDP 报文段格式3.3.3 UDP 校验和 3.2 多路复用与解复用 在了解多路复用之前先要知道端口的概念 在TCP/IP协议中端口用于 标识应用程序的通信终点允许 多个应用程序在同一台计算机上同时进行网络通信。端口分为两种类型TCP端口和UDP端口。 3.2.1 TCP 的多路复用与解复用 在上面 socket 编程了解到TCP 协议会将 源IP、源端口 和 目标 IP、目标端口封装到 socket 中
封装了这些信息的 TCP 报文段Segment被作为 SDU 交给下一层网络层通过对等实体的传输到对方主机的网络层对方主机通过传输过来的四元组信息找到对应的 socket 来达到解复用将信息传输给不同的应用进程。 sock 其实就是 socket 的简称指的是套接字。 3.2.2 UDP 的多路复用与解复用 UDP 的 socket 与 TCP 不同其中只封装了本主机的信息也就是源 IP 和 源端口 目标 IP 和目标端口作为调用 API 的参数传入 通过 UDP 的 socket 同样也可以实现多路复用
解复用即当信息通过网络层传输到对方的主机对方主机从网络层中获取到 源 IP 和 源端口 以及 本主机的 IP 和 端口由此可以找到本主机的进程来实现解复用。 多路复用就是通过本机的不同端口来使得信息分流传输 解复用就是通过传输来的信息找到请求的是哪个端口port 3.3 无连接传输UDP
3.3.1 基本概念 UDPUser Datagram Protocol用户数据数据报协议 与 TCP 不同的是UDP 在网络层端到端传输的基础上只是简单的将数据封装成数据报实现了进程之间的通信而没有像 TCP 那样做拥塞控制、流量控制等的操作。
所以 UDP 提供的是一种 “尽力而为” 的服务报文段可能会丢失或者乱序但是需要注意的是并不是说 UDP 无法实现可靠的传输通过 应用层 自身是可以实现可靠传输的。 UDP 被用于
流媒体对于丢失不敏感而对于速率敏感应用可控制传输速率DNSSNMP 应用可控制传输速率 因为没有 TCP 提供的控制服务UDP 接收到应用传输的数据就直接将其通过 IP 发送出去所以使用 UDP 应用是可以控制传输速率的这对流媒体来说非常重要。 3.3.2 UDP 报文段格式 报文段是指在传输层使用该协议时从发送端到接收端单次传输的数据单元也就是前面提到的 PDU。 UDP 的报文段包含如下的数据 源端口号Source Port占用2个字节用于标识发送方的端口号。目标端口号Destination Port占用2个字节用于标识接收方的端口号。长度Length占用2个字节表示UDP报文段的长度包括头部和数据部分。校验和Checksum占用2个字节用于检测UDP报文段在传输过程中是否发生了错误。数据Data占用可变长度包含了传输的实际数据。 ❓ 为什么要有 UDP UDP 不建立连接前面学到的 TCP 三次握手过程来建立连接毫无疑问会增加延迟状态较为简单发送端和接收端没有链接的状态报文段的头部很小只包含上面提到的四种内容相比于 TCP 的十一种提升很大没有拥塞控制和流量控制UDP 可以尽可能快的发送报文段 应用传输的速率近似登录主机向网络中的传输速率 3.3.3 UDP 校验和 UDP校验和Checksum是为了检测在传输过程中数据报文是否出现差错而设立的一种机制。它通过计算特定的数据序列的二进制反码求和并确保在网络中传递时数据的完整性。 下面是形成 UDP 校验和的步骤
构造伪首部伪首部Pseudo Header是TCP和UDP在计算校验和时临时构造的一个数据结构它并不实际存在于网络传输的数据包中而是在发送方和接收方计算校验和时分别创建并使用的。 伪首部由以下部分组成其结构类似于IP头部的一部分源IP地址、目的IP地、协议字段、UDP长度 准备数据将UDP首部8字节包含源端口号、目的端口号、长度和校验和字段但此时校验和字段应置为0与UDP数据载荷一起考虑进来。逐16位相加将所有16位数据单元包括伪首部、UDP首部以及数据载荷中的每一对字节按照网络字节顺序大端序进行二进制相加。补溢出如果在累加过程中产生了进位即结果超过16位则将高16位与低16位相加直到没有进位为止。取反最终得到一个无进位的16位数字对该16位数求取反码得到的结果就是UDP校验和。设置到首部将计算得出的校验和写入UDP首部的校验和字段。 为什么要取反码 接收方接收到的的首部是是取反码构建的其再通过相同的步骤对上述内容求和再与反码进行相加得到的就是 16 位的全 1检验较为简单。