(*长期更新)软考网络工程师学习笔记——Section 8 传输层

Posted 晚风(●•σ )

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(*长期更新)软考网络工程师学习笔记——Section 8 传输层相关的知识,希望对你有一定的参考价值。

一、传输层的基本协议

传输层依靠的基本协议是TCP(传输控制协议)和UDP(用户数据报协议),传输层的相关知识由这两部分协议展开。

二、面向连接服务和无连接服务

面向连接服务,分为三步:建立连接、使用连接和释放连接,即首先要建立一条通信线路,然后在正式传输数据时,数据分组就不再需要携带目的地址,可靠性高,但它相比无连接服务其效率低,例如TCP协议
无连接服务由系统选定路线进行传输,收发方只有在传输数据时才处于激活状态,其下层资源动态分配,相比面向连接服务,它更加灵活、通信比较迅速且开销小,但可靠性低,不能防止报文出错,例如IP协议UDP协议

三、TCP

(一)TCP的基本概念

TCP是一种可靠的、面向连接服务的字节流服务,源主机在传输数据时要先与目标主机建立连接,然后被编号的数据段按顺序进行收发,且同时对每个数据段进行确认,从而保证了可靠性,若没有收到确认则会再次发送。

(二)TCP的三种机制

TCP是建立在无连接服务的IP基础上,通过三种机制实现面向连接服务:
1、使用序号对数据报标记,便于接收服务向高层传递数据之前调整错序的数据报。
2、通过使用确认、校验和定时器系统提供可靠性。
3、使用窗口机制调整数据流量,即可变大小的滑动窗口协议减小接收方缓冲区满而造成丢失数据报文的可能性,从而实现流量控制。

(三)TCP的报文首部格式

TCP的报文首部格式有以下:

1、源端口
字段长度为16位,用于标识源端和目标端的应用进程,端口号取值范围为0-65535。
2、序列号
又称为报文段序号,字段长度为32位。
3、确认号
字段长度为32位,即对方下一个报文段的第一个数据字段的序号。
4、报头长度
又称为数据偏移字段,字段长度为4位,单位32位,没有选项字段的TCP头部长度为20字节,最多可以有60字节的TCP头部长度。
5、保留字段
字段长度为6位,通常设置为0。
6、标记
当请求方发出同步SYN连接请求后,等待对方回答同步SYN、确认ACK,这样防止建立错误的连接。
(1)紧急URG:紧急有效,需要尽快传送;
(2)确认ACK:建立连接后的报文回应,ACK置1;
(3)推送PSH:接收方应将该报文尽快交给上层协议,无需等待缓存满;
(4)复位RST:重新连接;
(5)同步SYN:发起连接,即当TCP实体要建立连接时,其段头中的SYN标志置1;
(6)终止FIN:释放连接。
7、窗口大小
字段长度为16位,该字段用于进行流量控制(通过可变大小的滑动窗口协议),作为接收方让发送方设置其发送窗口的依据,该值为期望下一次接收的字节数。
8、校验和
字段长度为16位,对整个TCP报文段进行校验和计算,并由目标端进行验证。
9、紧急指针
字段长度为16位,它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
10、选项
字段长度可变,可变至40字节,为保证报文长度是32位的倍数,因此还需要填充0。

(四)TCP三次握手

TCP协议使用三次握手机制建立连接,其目的是使数据段的发送和接收同步,同时也向其它主机表明其一次可接收的数据量(窗口大小)并建立逻辑连接,双方通信前源主机和目标主机都处于CLOSED状态
1、第一次握手
源主机发送一个SYN=1的TCP数据段,同时标明初始序号ISN,ISN是一个随时间变化的随机值,即SYN=1,SEQ=x,源主机进入SYN-SENT状态
2、第二次握手
目标主机收到SYN包后,发回确认数据报文,即ACK=1,同时确认序号字段,表明目标主机期待收源主机下一个数据段的序号,即ACK=x+1。
数据段中另外设置SYN=1,并包含目标主机的段初始序号y,即ACK=1,确认序号ACK=x+1,SYN=1,自身序号SEQ=y,此时目标主机进入SYN-RCVD状态,源主机进入ESTABLISHED状态
3、第三次握手
源主机再回送一个确认数据段,同样带有递增的发送序号和确认序号,即ACK=1,确认序号ACK=y+1,自身序号SEQ+1。经过三次握手后,源主机就可以与目标主机互相收发数据。

(五)TCP释放连接

TCP释放连接分为四步,此时源主机和目标主机都处于ESTABLISHED状态
1、第一步
源主机发送一个释放报文,FIN=1,自身序号SEQ=x,源主机进入FIN-WAIT状态
2、第二步
目标主机接收到报文后发送确认报文,即ACK=1,确认序号ACK=x+1,自身序号SEQ=y,目标主机进入CLOSE-WAIT状态,此时TCP连接处于半关闭状态,源主机已经停止发送数据,但目标主机仍可发送数据。源主机在接收到ACK报文后等待目标主机发出FIN报文。
3、第三步
目标主机确认没有数据后,发出释放报文,即FIN=1,ACK=1,确认序号ACK=x+1,自身序号SEQ=z,此时目标主机进入LAST-ACK状态
4、第四步
源主机接收到释放报文后,对目标主机发送确认报文,即ACK=1,确认序号ACK=z+1,自身序号SEQ=x+1,等待一段时间确定确认报文到达后,源主机进入CLOSED状态,目标主机在接收到确认报文后,也进入CLOSED状态

四、UDP

(一)UDP的基本概念

用户数据报协议(UDP)是一种不可靠的、无连接服务的数据报服务。数据附加源端口号和目标端口号等UDP报头字段后,直接发往目的主机,在传送数据较少且较小的情况下,UDP比TCP显得更加高效。

(二)UDP首部结构

UDP的首部格式有以下:

1、源端口号
字段长度为16位,与TCP中的端口号字段作用相同,用于标识源端的应用进程,在需给对方回信时用,不需要时为0。
2、目标端口号
字段长度为16位,与TCP中的端口号字段作用相同,用于标识目标端的应用进程,在需目标交付报文时用到。
3、长度字
字段长度为16位,用于标明UDP头部和UDP数据的总长度字节。
4、校验和
该字段为可选项,长度为16位,用于校验UDP头部和UDP数据,有错时就丢弃。

(三)协议端口号

协议端口号是用于标识目标主机进程的方法,TCP/IP协议中使用16位的端口号来标识端口,即端口号的取值为0-65535。
协议端口号可分为系统端口、登记端口和客户端使用端口三种。

1、系统端口

常用的系统端口协议号有以下:

协议号英文名称用途
20FTP-DATAFTP数据传输
21FTPFTP控制
22SSHSSH登录
23telnet远程登录
25SMTP简单邮件传输协议
53DNS域名解析
67DHCPDHCP服务器开启,用于监听和接收客户请求信息
68DHCP客户端开启,用于接收DHCP服务器的消息回复
69TFTP简单FTP
80HTTP超文本传输
110POP3邮局协议
143IMAP交互式邮件存取协议
161SNMP简单网管协议
162SNMP(trap)SNMP Trap报文
443HTTPS加密的超文本传输服务

2、登记端口

该端口是为没有熟知端口号的应用程序使用的,端口号范围为1024-49151。

3、客户端使用端口

该端口在客户端进程运行时动态使用,使用完后,进程会释放端口,端口号范围为49152-65535。

结语

记录一下,这是2021年的最后一篇文章,希望2022新的一年,大家事业冲冲冲!!!

以上是关于(*长期更新)软考网络工程师学习笔记——Section 8 传输层的主要内容,如果未能解决你的问题,请参考以下文章

(*长期更新)软考网络工程师学习笔记——Section 2 数字传输系统

(*长期更新)软考网络工程师学习笔记——Section 17 交换技术原理

(*长期更新)软考网络工程师学习笔记——Section 13 Linux网络配置命令

(*长期更新)软考网络工程师学习笔记——Section 6 网络层上篇

(*长期更新)软考网络工程师学习笔记——Section 9 应用层

*(长期更新)软考网络工程师学习笔记——Section 20 路由技术原理