(*长期更新)软考网络工程师学习笔记——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、系统端口
常用的系统端口协议号
有以下:
协议号 | 英文名称 | 用途 |
---|---|---|
20 | FTP-DATA | FTP数据传输 |
21 | FTP | FTP控制 |
22 | SSH | SSH登录 |
23 | telnet | 远程登录 |
25 | SMTP | 简单邮件传输协议 |
53 | DNS | 域名解析 |
67 | DHCP | DHCP服务器开启,用于监听和接收客户请求信息 |
68 | DHCP | 客户端开启,用于接收DHCP服务器的消息回复 |
69 | TFTP | 简单FTP |
80 | HTTP | 超文本传输 |
110 | POP3 | 邮局协议 |
143 | IMAP | 交互式邮件存取协议 |
161 | SNMP | 简单网管协议 |
162 | SNMP(trap) | SNMP Trap报文 |
443 | HTTPS | 加密的超文本传输服务 |
2、登记端口
该端口是为没有熟知端口号的应用程序
使用的,端口号范围为1024-49151。
3、客户端使用端口
该端口在客户端进程运行时动态使用
,使用完后,进程会释放端口,端口号范围为49152-65535。
结语
记录一下,这是2021年的最后一篇文章,希望2022新的一年,大家事业冲冲冲!!!
以上是关于(*长期更新)软考网络工程师学习笔记——Section 8 传输层的主要内容,如果未能解决你的问题,请参考以下文章
(*长期更新)软考网络工程师学习笔记——Section 2 数字传输系统
(*长期更新)软考网络工程师学习笔记——Section 17 交换技术原理
(*长期更新)软考网络工程师学习笔记——Section 13 Linux网络配置命令
(*长期更新)软考网络工程师学习笔记——Section 6 网络层上篇