第五章 传输层
-
传输层功能:为相互通信的应用进程提供了逻辑通信(传输层:程序到程序;网络层:服务器到服务器)
-
传输层的两个协议
- TCP(传输控制协议):需要将要传输的文件分段传输,建立会话,实现可靠传输,且有流量控制功能
- UDP(用户数据报协议):一个数据包就能够完成数据通信,不需要分段,不需要建立会话,不需要流量控制,不可靠传输,还应用于屏幕广播(多播、广播)
-
查看会话:netstat -n
查看建立会话的进程:netstat -nb -
传输层协议和应用层协议之间的关系
- 常见的应用层协议使用的端口
-
http=TCP+80
-
https=TCP+443
-
远程桌面RDP=TCP+3389
-
ftp=TCP+21
-
共享文件夹=TCP+445
-
发邮件SMTP=TCP+25
-
收邮件POP3=TCP+110
-
telnet=TCP+23
-
SQL=TCP+1433
-
域名解析DNS=UDP+53
-
- 常见的应用层协议使用的端口
-
服务和应用层协议之间关系
-
服务使用TCP或UDP的端口侦听客户端请求
-
客户端使用IP地址定位服务器,使用目标端口定位服务
-
可以在服务器网卡上设置只开放必要的端口,实现服务器网络安全
-
-
如何查看服务侦听的端口
netstat -an 查看侦听的端口
netstat -n 查看建立的会话
netstat -nb 查看建立会话的进程
telnet 192.168.80.100 3389 测试远程计算机某个端口是否打开 -
如何更改服务使用默认端口
迷惑入侵者,使系统更加安全 -
如何设置Windows网络安全
设置本地连接,TCP/IP筛选,只开必要的端口 -
TCP端口
-
端口用一个16位的端口号进行标志
-
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程
-
端口 0-65535
-
熟知端口:0-1023
-
登记端口:1024-49151(如 RDP:3389)
-
客户端端口:49152-65535
-
-
netstat -n | find “ESTABLISHED”
-
-
UDP的主要特点
- UDP 是无连接的,即发送数据之前不需要建立连接
- UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制
- UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求
- UDP 支持一对一、一对多、多对一和多对多的交互通信
- UDP 的首部开销小,只有 8 个字节
-
TCP协议要点
-
TCP如何实现可靠传输
-
TCP协议如何实现流量控制
-
TCP协议如何避免网络拥塞
-
-
传输控制协议TCP概述
- TCP 是面向连接的传输层协议
- 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)
- TCP 提供可靠交付的服务
- TCP 提供全双工通信
- 面向字节流
-
TCP的连接
- TCP 把连接作为最基本的抽象
- 每一条 TCP 连接有两个端点,TCP 连接的端点叫做套接字(socket)
- 端口号拼接到IP地址即构成了套接字,套接字 socket = (IP地址: 端口号)
-
可靠传输的工作原理–停止等待协议
- 根据帧确认和重传机制,可以在不可靠的传输网络上实现可靠的通信
- 信道利用率:U = TD / (TD + RTT + TA),RTT为等待时间即往返时间,TD为发送数据时间,TA为接收数据时间
- 这种可靠传输协议常称为自动重传请求ARQ
- 停止等待协议的优点是简单,但缺点是信道利用率太低
- 连续ARQ协议
- 发送方维持发送窗口
- 接收方一般采用累积确认的方式
-
TCP报文段
- 序号:数据部分的第一个字节是原数据中的第多少个字节
- 确认号:收到该报文段后,下一个应该发送的字节
- 数据偏移:记录报文段从多个字节以后的是数据(四位,一个1是4个字节)
- URG位为1,则不用等待直接发送
- ACK位为0,确认号无效,为1,确认号有效
- SYN位为1,发送请求建立会话的数据包(SYN为1时ACK为0)或同意建立会话(SYN为1时ACK为1)
- PSH位为1,接收端不用等待直接处理
- RST位为1,TCP会话出现严重错误,必须释放连接,如需正常连接需重新建立会话
- FIN位为1,释放连接
- 窗口:接收方和发送方协商缓存窗口大小,根据接收缓存的大小设置发送缓存,即窗口大小
- 校验和与UDP一致,只是把协议号改为6
- 紧急指针:当URG为1时该位有效,表明需要紧急处理的字节,即数据包中需要紧急处理的结束位
- 选项:能够通知对方可以接收的最大数据报长度,是否支持选择性确认
-
TCP实现可靠传输–以字节为单位的滑动窗口技术.
- TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口
- TCP 的可靠传输机制用字节的序号进行控制
- TCP 两端的四个窗口经常处于动态变化之中
- 超时重传时间的选择
- TCP 每发送一个报文段,就对这个报文段设置一次计时器
- 新的 RTTS (平均往返时间)= (1 - 阿尔法) * (旧的 RTTS) + 阿尔法 * (新的 RTT 样本)
- 超时重传时间应略大于上面得出的加权平均往返时间 RTTS
- RFC2988推荐的阿尔法值为1/8
-
利用滑动窗口实现流量控制
- 流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
- 利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制
-
拥塞控制的一般原理
-
出现资源拥塞的条件:对资源需求的总和 > 可用资源
-
慢开始和拥塞避免算法
-
新的慢开始门限 = 开始丢包时的窗口值的1/2
-
“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。
-
“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
-
-
快重传和快恢复
- 快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。
- 当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限 ssthresh 减半,但拥塞窗口 cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
- 发送窗口的上限值 = Min [rwnd, cwnd] (接收窗口和拥塞窗口的最小值)
-
-
TCP的传输连接管理
-
传输连接有三个阶段,即:连接建立、数据传送和连接释放
-
TCP 连接的建立都是采用客户服务器方式
-
主动发起连接建立的应用进程叫做客户(client)
-
被动等待连接建立的应用进程叫做服务器(server)
-
-
用三次握手建立TCP连接
-
-
TCP 的连接释放
- MSL:最长报文寿命,默认两分钟
server)
-
用三次握手建立TCP连接
[外链图片转存中…(img-YksbUlu9-1592317105617)]
-
TCP 的连接释放(四次挥手)
- MSL:最长报文寿命,默认两分钟
- MSL:最长报文寿命,默认两分钟