计算机网络原理——传输层UDP协议

    技术2022-07-21  82

    UDP协议

    端口号描述一次通信过程(五元组)UDP协议UDP原理

    端口号

    一个两个字节构成的“无符号”整数 0-65535 区分一个主机上的多个进程 socket API中涉及到端口号的部分使用的是int 表示.实际上最多也就是两个字节. 一个进程可以绑定多个端口号,通常一个端口号不能被多个进程绑定(Linux fork 把当前的进程复制一份,得到一个子进程(把PCB复制,顺便就把PCB中的文件描述表进行复制,看起来就是两个进程绑定了同一个端口))

    0-1023是一些 知名端口号,一些常用的服务器,就给他们确定了一些固定的端口 ssh服务器, 使用22端口 ftp服务器, 使用21端口 telnet服务器, 使用23端口 http服务器, 使用80端口 https服务器, 使用443 Linux中知名端口号是需要管理员权限 Tomcat 8080 MySQL3306

    描述一次通信过程(五元组)

    源IP 源端口号 目的IP 目的端口号 协议号

    UDP协议

    1、无连接

    不需要创建连接就可以直接通讯,跟发微信一样,不需要对方先进行确认,知道对端的IP和端口号就直接进行传输, 不需要建立连接。 UCP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都具有优势。 分组首部开销小 TCP首部20字节,UDP首部8字节。

    2、不可靠

    发送者不知道接受者是否收到数据,没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返 回任何错误信息;

    3、面向数据报(以DatagramPacket为单位进行读写操作)

    应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并,不能够灵活的控制读写数据的次数和数量

    4、UDP没有拥塞控制 应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)

    UDP原理

    UDP协议格式

    UDP首部有8个字节,由4个字段构成,每个字段都是两个字节 1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0. 2.目的端口: 目的端口号,在终点交付报文的时候需要用到。 3.长度: UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部) 一个UDP数据报的最大长度就是64K,数据比较少,如果应用层数据的长度超过64k,超出的部分就被截断了,于是就会发送一个残缺的数据。 所以一旦超出64k,要么手动在应用层拆分数据报(使用多个UDP数据报进行传输);要么就换成TCP协议 4.校验和: 检测UDP数据报在传输中是否有错,有错则丢弃。 比如去你妈让你去买菜要买:鸡蛋,西红柿,生菜,黄瓜,最后你妈叮嘱一句: 一共四样!!,(最后这个四样就是用来校验是否正确买到菜了,当然如果你把生菜买成了韭菜那也是四样,校验和也还是四所以我们可以得出结论)如果校验和不符合预期,说明数据一定是错了;但是如果校验和符合预期,数据也不一定就是正确无误的。

    Processed: 0.008, SQL: 9