7.1 传输层概述
- 分段及封装应用层送来的数据:应用层以字节流的形式给传输层传输数据,传输层会把字节流分段,并给每段封装
由应用程序产生应用进程,由应用进程产生进程端口号,由端口号提供相应的服务
如何查看本机端口号:用netstat
7.2 TCP详解
7.2.1 TCP发送缓存,接受缓存及报文段详解
- 应用层以字节的形式向传输层发送数据
- TCP发送进程以字节流的形式传递数据,而接收进程也把数据作为字节流来接收,类似于假想的管道
- UDP发送进程发送的数据报文都是独立的,因此UDP不是面向字节流的协议
- 缓存:数据流向的每一个方向上都有两种缓存:发送缓存、接收缓存
在传输层向IP层发送数据时要以分组为单位,而不是按字节流来发送,TCP协议把若干字节构成一个分组,我们可以把这样的分组称为报文段(segment),这种报文段不一定都一样长,可以是几个字节,也可以是几千个字节
7.2.2 TCP中的字节号和序号详解
字节号:
以字节为单位
字节号的定义范围:0到(2^32-1)
编号机制:随机
举例:假如随机号正好是1057,而要发送6000个字节,那么字节编号范围是:1057到7056
序号:
以字节为基础,TCP给每一个报文段指派一个序号
每个报文段的序号就是在这个报文段中第一个字节数据的序号
举例:
比如TCP要传输6000个字节的文件,第一个字节的编号是10001,如果数据用5次来发送,前4个报文段各携带1000字节的数据,最后一个报文段携带2000字节的数据:
报文段1--->序号:10001 (字节号范围:10001到11000)
报文段2--->序号:11001 (字节号范围:11001到12000)
报文段3--->序号:12001 (字节号范围:12001到13000)
报文段4--->序号:13001 (字节号范围:13001到14000)
报文段5--->序号:14001 (字节号范围:14001到16000)
7.2.3 TCP中的报文段格式详解
- 补充:源端口是随机的,为动态端口(短暂端口)49152到65535
目的端口为熟知端口(著名端口)为0到1023
- RST为1的三种情况:a、拒绝连接请求;b、异常终止连接;c、终止空闲连接;
- 伪首部指的是IP地址
- 检验和是TCP的必须内容,是UDP的可选内容
- Ctrl+c就是紧急指针的内容同时URG为1;
普通情况下此关系成立,在以太网中MTU为1500字节,由硬件决定