传输层之UDP头部解析、UDP特点&TCP头部解析、TCP特点

UDP

一、UDP是什么?

UDP是User Datagram Protocol(用户数据报协议)

二、UDP的特点

1.UDP是无连接的,即就是UDP在发送数据之前不需要建立连接;

ps:知道对端的IP和端口号就可以直接进行传输

2.UDP是尽自己的最大努力来进行交付的,即就是UDP不保证可靠交付;
3.UDP没有拥塞控制,很适合多媒体通信的要求;
4.UDP的首部开销小,首部长度只有8个字节;
5.UDP由于不保证可靠交付,所以UDP传输速度快,故UDP经常用于传送多媒体数据。
6.UDP是面向数据报的

ps:由于UDP面向数据报,所以UDP不能够灵活的控制读写数据的次数和数量

7.UDP不可靠,所以UDP没有确认机制、没有重传机制。
8.UDP可以实现全双工通信

ps:全双工通信就是通过UDP的一个socket,既可以读也可以写
9.应用层交给UDP多长的报文,UDP原样发送,既不会拆分也不会合并

ps:UDP允许丢包,可以乱序交付
面向数据报例子
假设现在需要发送一个长度为100个字节的数据,如果发送端调用一次sendto函数,发送100个字节,那么接收端也必须调用recvfrom函数,接收100个字节,而不能循环的调用10次recvfrom函数,每次接收10个字节

三、UDP的头部

这里写图片描述
字段解析:

source port: 源端口号,占16位,2个字节
dest port: 目的端口号,占16位,2个字节
length: 此字段标记了整个数据报(UDP的首部+UDP数据)的最大长度
checksum: 检验和,此字段用处是用来检查收到地数据的对错的
ps:如果校验和出错,就会直接丢弃
Application data: 数据部分(如果有的话)

ps:根据端口号的大小得知:同一个主机上的进程数为2^16

四、UDP的使用注意事项

1.由于UDP的首部中一个16位的最大长度,所以UDP可以传输的数据最大长度是64k(包含UDP首部)
2.当传输的数据较大时,需要对数据在应用层手动的进行分包,多次的发送,并在接收端手动拼装

TCP

一、TCP是什么

TCP是传输控制协议(Transmission Control Protocol)

二、TCP的特点

1.(connection-oriented)面向连接;
2.(Reliable)可靠;
3.(in-order)按顺序;
4.(Flow control)流量控制;
5.(Congestion control)拥塞控制;
6.面向字节流;
7.编序号是针对字节的,一个字节一个序号,而且报文段的序号是当前报文段中第一个字节的序号;
8.发送端和接收端都有缓冲区,并且缓冲区的大小大于等于1;
9.TCP可以实现全双工通信;
10.没有结构有序的字节流;
11.发送端能连续发送的报文的大小是根据—->滑动窗口的大小

ps:滑动窗口中的数据类型
这里写图片描述

三、TCP的首部

这里写图片描述

字段解析

(1)源端口:占2字节,指定报文的源端口号
(2)目的端口:占2字节,指定报文的目的端口号

ps:端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

(3)序号

占4字节,TCP 连接中传送的数据流中的每一个字节都会被编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

(4)确认号

占 4 字节,是期望收到对方的下一个报文段的数据中的第一个字节的序号。

(5)数据偏移

占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。

(6)偏移

占6位,保留为今后使用,但是目前应置为0。

(7)ACK

占1位,ACK被称为确认ACK,只当ACK=1时确认号字段才有效。当 ACK=0 时,确认号是无效的

(8)SYN

占1位,被称为同步SYN,当SYN=1时,表示这是一个连接请求或连接接受报文。

(9)FIN

占1位,被称为终止SYN,用来释放一个连接,当FIN=1时,说明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

(10)窗口大小

占2字节,此字段是用来设置滑动窗口的大小的,单位是字节

(11)检验和

占2字节,检验的范围包括TCP的首部和数据两个部分,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部

(12)紧急指针

占2字节,此字段用来支出本报文段中紧急数据的字节数(紧急数据放在本报文段数据的前面)

(13)选项:占24位,是留着备用的,长度可变
(14)填充

占8位,此字段没有什么作用,只是为了使TCP的首部长度为4字节的整数倍

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值