您的位置:首页 > 理论基础 > 计算机网络

UDP、TCP基础笔记

2012-12-25 11:12 211 查看

UDP:用户数据报协议

UDP是一个简单的面向数据报的协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报;

1.UDP首部:UDP首部是有8字节组成

1)16bit源端口号和16bit目的端口号

2)16bitUDP长度:指的是UDP首部和UDP数据的字节长度;

3)UDP检验和:UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,而TCP的检验和是必选的。UDP的检验和覆盖了它的首部和数据,其计算方式和IP的检验和是有一定区别的。首先,IP的检验和计算的只是首部没有数据部分,其次,UDP数据报的长度可以为奇数字节,那么在计算检验和的时候要在最后添加0进行不齐,最后,如果UDP数据的接收端发现检验和有错那么就会直接丢弃掉数据;

2.IP分片

1)为什么要分片

物理网络层一般要限制每次发送数据帧的最大单元(MTU),所以当IP层接收到一份要发送的IP数据报时,它除了要判断向本地哪个接口发送数据外,还要查询该接口获得其最大传输单元(MTU)。如果查询出来的最大传输单元小于要传输的IP数据报长度,那么就要进行IP分片;

2)与IP分片相关的首部字段是哪些

在IP首部中,标识字段,标志字段和片偏移字段是用来对IP数据报进行分片的。我们接下来一一讨论这些字段的用处是什么。首先,标识字段,这个字段对于要发送的IP数据报来说是唯一的,每个分片都会复制这个字段(表明了它们产生与同一个大的IP数据报,一母同胞)。其次,标志字段,这个字段占3bit,其中一位用来表示“还有分片”,所以除了最后一个分片外其他分片的这一位都会置为1。标志字段还有一位用来表示“不分片”,如果这一位置为了1,那么IP数据报就不会进行分片(如果IP数据报长度大于MTU那么就会产生ICMP不可达差错报文)。最后,片偏移字段,指的是该片偏移原数据报开始处的位置。

3)分片后每个分片的构成

IP分片后,每片就成为了一个分组,具有了自己独立的IP头部(这个头部的IP长度字段需要更改为当前分片的长度),具有了自己独立选路的特性(这也使得IP分片到达接收端可能会出现失序的现象)。值得注意的是每个分片都有自己的IP头部,但是只有第一个分片是具有传输层协议的头部,其他分片都没有。

TCP:传输控制协议

TCP向应用层提供的服务是与UDP向应用层提供的服务是不同的,TCP协议提供了一种面向连接的,可靠的字节流服务。

1.TCP协议如何保证其可靠性

1)应用数据被分割成TCP认为最适合发送的数据块;

2)当TCP发送一段后,它将启动一个定时器,等待目的端确认收到这个报文(超时与重传策略);

3)对收到的数据TCP总是会发送一个确认;

4)TCP首部的检验和是必须的(超时与重传策略);

5)丢弃已传数据报;

6)提供流量控制机制(TCP缓冲区);

7)提供失序重排机制(保证了以正确的顺序提交给应用层);

2.TCP协议的首部构成

如果不算上任选字段,TCP首部通常是为20个字节的,其组成字段为:

1)16位源端口号和16位目的端口号(它们确定了一个TCP的连接)

2)32位序号:用来标识从TCP发送端向TCP接收端发送的数据字节流,每发送一个字节的数据序号增加1,其取之范围为0到65534,当超过这个范围后重新从0开始;

3)32位确认序号:包含的是发送确认一端期望的下一个序号,也就是说确认序号存储的是上次接收数据序号+1的值;

4)4位首部长度

5)6bit标志字段:它们中可以有多个位同时置为1,其中包括URG(紧急指针有效),ACK(确认序号有效),PSH(接受方应该尽快将这个报文交给应用层),RST(重新连接),SYN(同步序号用来发起一个连接),FIN(发送端完成发送任务)

6)16位窗口大小字段:TCP的流量控制是由连接的每一端通过窗口大小来提供的,窗口大小为字节数,这个值是接收端期望接收的字节;

7)检验和字段:其覆盖了TCP的首部和其数据部分,对于TCP来说是一个强制字段,一定是由发送端计算存储,由接收端进行验证的;

8)16位紧急指针字段

9)任选字段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: