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)任选字段
相关文章推荐
- 应聘复习基础笔记1:网络编程之TCP与UDP的优缺点,TCP三次握手、四次挥手、传输窗口控制、存在问题
- 黑马程序员---2015.6.27java基础笔记--字符编码--TCP--UDP
- TCP/IP笔记 三.运输层(1)——UDP,TCP
- WindowsSockets基础—TCP,UDP程序
- java语言基础(100)——网络编程(udp tcp发收数据)
- linux网络编程之TCP/IP基础(五):分析一帧基于UDP的TFTP协议帧
- (Java 基础知识)Java TCP和UDP
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- UNIX网络编程笔记 第二章 传输层TCP、UDP和SCTP
- 网络基础 - 常見的通訊協定 IP/TCP/UDP/ICMP
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
- java基础学习网络编程之UDP和TCP协议 十四 -3
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
- TCP和UDP的一些基础
- python网络编程学习笔记(2)--TCP和UDP区别(补充)
- 【学习笔记】TCP/IP基础(1)
- java基础第23天(udp数据传输与tcp数据传输)
- 图解TCP/IP笔记-网络基础知识
- 黑马程序员---网络,tcp udp 笔记
- 【tcp-ip学习总结】基础UDP实现的简单通信功能小程序