上图以 UDP 的 Socket 调用为例,进程调用 recvfrom 后,系统调用直到数据报到达且被复制到用户空间中或发生错误才返回。进程从调用开始到它返回的整段时间内是被阻塞的。...recvfrom 成功返回后,应用进程开始处理数据报。 默认情形,Linux/Unix 的所有 Socket 是阻塞的。 附:基于 UDP 协议的 Socket 程序函数调用过程图 ?...非阻塞式 I/O 模型 在类 Unix 系统下,可以把一个 Socket 设置成非阻塞的。这意味着内核在数据报没有准备好时不会阻塞应用进程(睡眠态),而是返回一个错误。 ?...上图以 UDP 的 Socket 调用为例,进程反复调用 recvfrom(polling,轮询),无数据返回 EWOULDBLOCK 错误,直至数据报准备好。...为了处理多个网络连接 I/O,我们也可以通过多线程/进程的方式实现,多路复用的优势何在?
关于TCP的其他知识:如三次握手、四次挥手、无差错控制原理等,具体请看文章:计算机网络:这是一份全面 & 详细 的TCP协议攻略 3....UDP协议 3.1 定义 User Datagram Protocol,即用户数据报协议 属于传输层通信协议 基于UDP的应用层协议有 TFTP、SNMP 与 DNS 3.2 特点 无连接的、不可靠的、...Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输) 即:通过Socket,我们才能在Andorid平台上通过 TCP/IP协议进行开发 对用户来说,只需调用...特别注意:在各类IP地址中,有一些IP地址用于特殊用途,不能用于做主机IP地址 ?...个主机的连通性 原理 向目的主机发送多个ICMP回送请求报文 根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间 最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、
TTL(time to live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。...ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。 每一份IP数据报都包含源IP地址和目的地址。 最后一个字段任选项,是数据报中的一个可变长的可选信息。...这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。 ? UDP长度字段指的是UDP首部和UDP数据的字节长度。 ...(1)UDP数据报的长度可以为奇数字节,但是检验和的算法是把若干个16bit字相加。(2)UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算检验和而设置的。 ...如请求来不急处理便会由UDP自动排队。 当UDP数据到达的目的IP地址为广播地址或多播地址,而且在目的IP地址和端口号外有多个端点时,就向每个端点传送一份数据报的复制。
UDP协议 3.1 定义 User Datagram Protocol,即 用户数据报协议 属于 传输层通信协议 基于UDP的应用层协议有 TFTP、SNMP 与 DNS 3.2 特点 无连接的、不可靠的...3.3 优缺点 优点:速度快 缺点:消息易丢失(特别是 网络较差时) 3.4 应用场景(对应应用层协议) 要求通信速度高 如: 域名转换:DNS协议 文件传输:FTP协议 网络管理:SNMP协议...Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输) 即:通过Socket,我们才能在Andorid平台上通过 TCP/IP协议进行开发 对用户来说,只需调用...特别注意:在各类IP地址中,有一些IP地址用于特殊用途,不能用于做主机IP地址 ?...原理 向目的主机发送多个ICMP回送请求报文 根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间 最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、
UDP协议 3.1 定义 User Datagram Protocol,即 用户数据报协议 属于 传输层通信协议 基于UDP的应用层协议有 TFTP、SNMP 与 DNS 3.2 特点 无连接的、不可靠的...、UDP协议的区别 4....是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API) Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输...其他知识 6.1 在浏览器中输入url地址 ->> 显示主页的过程 打开一个网页,整个过程会使用哪些协议 6.2 IP地址(IPv4地址) 定义 连接在Internet中的每一台主机(或 路由器...个主机的连通性 原理 向目的主机发送多个ICMP回送请求报文 根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间 最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、
关于TCP的其他知识:如三次握手、四次挥手、无差错控制原理等,具体请看文章:计算机网络:这是一份全面 & 详细 的TCP协议攻略 3....UDP协议 3.1 定义 User Datagram Protocol,即用户数据报协议 属于传输层通信协议 基于UDP的应用层协议有 TFTP、SNMP 与 DNS 3.2 特点 无连接的、不可靠的、...是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API) Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输...协议 定义 Internet Control Message Protocol,即 网际控制报文协议 属于IP层协议 注:ICMP报文不是高层协议,而是作为IP层数据报的数据,加上数据报首部,组成IP数据报发出去...个主机的连通性 原理 向目的主机发送多个ICMP回送请求报文 根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间 最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、
UDP(user datagram protocol)用户数据报协议,属于传输层。 UDP是面向非连接的协议,它不与对方建立连接,而是直接把数据报发给对方。...UDP无需建立类如三次握手的连接,使得通信效率很高。因此UDP适用于一次传输数据量很少、对可靠性要求不高的或对实时性要求高的应用场景。 ...失败返回-1,错误原因会存于errno 中。 ...参数说明: s: socket描述符; buf: UDP数据报缓存区(包含待发送数据); len: UDP数据报的长度; flags:调用方式标志位(一般设置为...失败返回-1,错误原因会存于errno 中。
● 标记:标记字段中的DF(不分段)和MF(更多分段)位用于控制IP数据报的分段行为:DF位设置为1表示不允许分段,而MF位设置为0表示当前数据报没有更多分段或未进行分段。...● 生存时间(TTL):生存时间(TTL)字段表示数据报在被抛弃之前允许通过的路由器跳数,每个路由器在转发数据报时至少将其减1,以防止数据报在网络中无限循环。...● IP数据载荷:属于实际传输的数据,可以承载如TCP段或UDP数据报等上层协议的数据。...由源节点设置,并在路径中保持不变。 ● 有效载荷长度(Payload Length)长度:16 位,表示整个数据报中除 IPv6 报头之外的数据部分的长度,单位为字节。...● 跳数限制(Hop Limit):长度8 位,表示数据包在网络中可以经过的最大跳数。每经过一个路由器,这个值会减少 1,当值为 0 时,数据包将被丢弃。
数据: 用户数据是打包在UDP协议中,UDP协议是基于IP协议之上的,IP协议又是走MAC层发送的,即从包含关系来说:MAC帧中的数据段为IP数据报,IP报文中的数据段为UDP报文,UDP报文中的数据段为用户希望传输的数据内容...TTL的初始值由源主机设置(通常为32或64),一旦经过一个路由器(网络层),他的值就减去1,当该字段的值为0时,数据报就被丢弃,并发送ICMP消息通知源主机,这样当封包在传递过程中由于某些原因未能抵达目的地的时候就可以避免其一直充斥在网路...指示该封包所使用的网络协议类型,如ICMP、DNS等,常用的协议号: 16’d00:IP 16’d01:ICMP 16’d06:TCP 16’d17:UDP 报头校验和: 2Byte。...IP报头的校验和,不对首部后面的的和数据进行计算,在发送数据时,为了计算IP数据报的校验和,步骤为: (1)、将校验和字段置0,然后将IP包头按照16bit分成更多单元,如包头长度不是16bit整数倍,...因为IP数据报的首部长度为20字节,所以IP数据报的数据区长度为1480字节,而这个1480字节就是用来存放TCP传来的TCP报文段或者UDP传来的UDP数据报的,又因为UDP数据报的首部为8字节,所以
第11章 UDP:用户数据报协议 11.10 最大UDP数据报长度 理论上,I P数据报的最大长度是6 5 5 3 5字节,这是由I P首部(图3 - 1)1 6比特总长度字段所限制的。...socket API提供了一个可供应用程序调用的函数,以设置接收和发送缓存的长度。对于 UDP socket,这个长度与应用程序可以读写的最大 U D P数据报的长度直接相关。...现在的大部分系统都默认提供了可读写大于 8 1 9 2字节的U D P数据报(使用这个默认值是因为 8 1 9 2是N F S读写用户数据数的默认值)。...我们还会在其他U D P应用程序如D N S(第1 4章)、T F T P(第1 5章)、B O O T P(第1 6章)以及S N M P(第2 5章)中遇到这个限制。...超出部分数据在后面的读取中返回。它也不通知应用程序从单个UDP数据报中多次进行读取操作。TLI API不丢弃数据。
的一个数,因为在大多数情况下,大于30000的UDP端口号是任何一个应用程序都不可能使用的端口号。...当经过的跳数小于此参数值,由于TTL字段的值大于0,经过的这几个节点不会返回ICMP超时报文给源主机。如果已经设置了max-ttl参数值,first-ttl的取值必须小于max-ttl。...通常情况下,max-ttl的值被设置为经过站点的跳数。如果已经设置了first-ttl参数值,max-ttl的取值必须大于first-ttl。缺省情况下,最大TTL为30。...当网络质量不高时,可以增加发送探测数据报文的数目,保证探测报文能够到达目的节点。缺省情况下,每次发送三个UDP探测数据报文。 -w:等待响应报文的超时时间。...-w:用于设置UDP报文的超时时间,单位为毫秒。 host:指定目的主机的域名或IP地址。
不管相信与否,路由器中也存在软件和硬件差错,以致于修改数据报中的数据。如果关闭端到端的UDP检验和功能,那么这些差错在UDP数据报中就不能被检测出来。...现在的大部分系统都默认提供了可读写大于 8192字节的UDP数据报(使用这个默认值是因为 8192是NFS读写用户数据数的默认值)。 第二个限制来自于TCP/IP的内核实现。...然而,排队溢出造成内核中的UDP模块丢弃数据报的可能性是存在的。...然而,实现中的常用值是30秒,1分钟,或2分钟。 在实际应用中,对 IP数据报TTL的限制是基于跳数,而不是定时器。...当下一个确认新数据的ACK到达时,设置cwnd为ssthresh(在第1步中设置的值)。这个ACK应该是在进行重传后的一个往返时间内对步骤 1中重传的确认。
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。...UDP没有拥塞控制,因此网络中的拥塞也不会影响主机的发送效率。某些实时应用(如直播)要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP正好可以满足这些应用的需求。...(5)UDP常用于一次性传输比较小数据的网络应用,如DNS、SNMP等,因为对于这些应用,若采用TCP,则将为创建连接、维护和拆除而带来不小的开销。...(3)长度 UDP数据报的长度(包括数据和首部),其最小值为8B(即仅有首部没有数据的情况)。 (4)校验和 检测UDP数据报在传输中是否有错,有错就丢弃。...当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给进程。
使用“超时”消息记录经过的路由: traceroute程序发送的数据报首部TTL字段由发送端设置成一个8bit字段。每个处理数据报的路由器都需要把TTL的值减1或减去数据报在路由器中停留的秒数。...由于大多数的路由器转发数据报的时延都小于1秒,因此TTL最终成为一个跳数计数器,每经过一台路由器就将其值减1。 当路由器收到一份IP数据报,如果其TTL字段是0或1,则路由器不转发该数据报。...使用“端口不可达”消息判断是否到达目的主机: traceroute程序发送一份UDP数据报给目的主机。...但它选择一个不可能的值作为UDP端口号(大于30000),目的主机的任何一个应用程序都不可能使用该端口。因此,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。...数据报发给指定地址;recvfrom()是从指定地址接收UDP数据报。...函数返回值 对于sendto()函数,成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中。...对于recvfrom()函数,成功则返回接收到的字符数,失败则返回-1,错误原因存于errno中。...关于UDP数据报 UDP都是以数据报的形式进行发送和接收的,而TCP是以数据流的形式进行发送和接收的。数据报和数据流,这两者要区分开来。
在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。如下图所示: ? ...用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。 9)协议字段:占8比特。...用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。 12)可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。...用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。...如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。
,对准确性要求相对低的场景(如视频点播) UDP数据报 UDP有两个字段: 首部字段和数据字段。...不需要时可用全0 目的端口号 这在终点交付报文时必须要使用到 UDP长度 UDP用户数据报的长度,其最小值是8(仅有首部) UDP校验和 检测UDP用户数据报在传输中是否有错。...滑动窗口协议与停止等待协议的区别 滑动窗口协议中,允许发送方发送多个分组(当有多个分组可用时), 而不需等待确认,但它受限于在流水线中未确认的分组数不能超过某个最大允许数N。 ...然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。 ...当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。
UDP理论讲解 UDP报文的交付 用户使用UDP来传输数据时,UDP协议会在数据前加上首部组成UDP报文,并交给IP协议来发送,而IP层将报文封装在IP数据包中并交给底层发送,在底层中,IP数据报会被封装在数据的数据帧中...IP层结构 IP协议是TCP/IP协议族中最为核心的协议,他提供了不可靠,无连接的服务,也依赖其它层的协议进行差错控制,所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传输。...这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。 总长度字段:占16bit。指明整个数据报的长度(以字节为单位)。...如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。 生存期字段:占8bit。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。...每经过一个路由器,其值减1,直到0时该数据报被丢弃。 协议字段:占8bit。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。
现在TTL的单位是跳数,指明数据报在因特网中至多可经过多少个路由器,最大值为255,通常为32、64、128。...当主机或路由器收到查询报文时,它不是立即响应,而是延迟响应 主机或路由器使用一个随机数产生计时器,它的截止时间是1~10秒。截止时间可以使用1秒或更短的步长。 表中的每一个组都设置计时器。...UDP用户数据报封装在IP数据报中,IP数据报的“协议类型”字段的值是17,表示数据部分是从UDP协议来的。 UDP校验和的计算 UDP校验和的计算与IP和ICMP校验和的计算不同。...UDP适用于具有内部流量控制和差错控制机制的进程。对多播和广播来说,UDP是个比较合适的传输层协议。UDP可用于管理进程,如SNMP协议。 UDP可用于某些路由选择更新协议,如RIP协议。...通过广播UDP协议520端口封装成的报文来交换路由信息,默认每30秒发送一次路由信息更新报文 RIP使用跳数作为路由距离度量,即数据报到达目标设备所必须经过的路由器数目 RIP最多支持的跳数为15,跳数
应用程序根据实际需要来设置 TOS值,如ssh和telnet这样的登录程序需要的是最小延时的服务,文件传输ftp需要的是最大吞吐量的服务 总长度: 指整个IP数据报的长度,单位为字节,即IP数据报的最大长度为...实际的偏移值为该值左移3位后得到的,所以除了最后一个IP数据报分片外,每个IP分片的数据部分的长度都必须是8的整数倍 生存时间:数据报到达目的地之前允许经过的路由器跳数。...TTL值被发送端设置,常设置为64。数据报在转发过程中每经过一个路由该值就被路由器减1.当TTL值为0时,路由器就将该数据包丢弃,并向源端发送一个ICMP差错报文。...在Linux系统的/etc/protocols文件中定义了所有上层协议对应的协议字段,ICMP为1,TCP为6,UDP为17 头部校验和: 由发送端填充接收端对其使用CRC算法校验,检查IP数据报头部在传输过程中是否损坏...松散路由选择: 指定路由器的IP地址列表数据发送过程中必须经过所有的路由器 严格路由选择: 数据包只能经过被指定的IP地址列表的路由器 上层协议(如TCP/UDP)的头部信息 tcpdump抓取二进制数据
领取专属 10元无门槛券
手把手带您无忧上云