传输层
功能:为相互通信的进程提供逻辑通信
OSI和DOD模型
传输层两个协议
- 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 1189 测试远程计算机某个端口是否打开
传输层的端口
-
协议号
- TCP 6
- UDP 17
- IGMP 1
端口 0-65535
-
熟知端口 0-1023
-
登记端口 1024-49151
-
客户端端口 49152-65535
netstat -n |find "ESTABLISHED"
查询建立连接的端口
UDP主要特点
- UDP是无连接的,即发送数据前不需要简历连接
- UDP使用尽最大努力交付,即不保证可靠交付,也不使用拥塞控制
- UDP是面向报文的
- UDP没有拥塞控制,适合多媒体通信的要求
- UDP支持一对一、一对多、多对一和多对多的交互通信
- UDP的首部开销小,只有8个字节
用户数据宝协议 UDP
UDP的首部
TCP主要特点
- TCP是面向连接的传输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)
- TCP提供可靠交付的服务
- TCP提供全双工通信
- 面向字节流
将要传输的数据转换为字节流,按照顺序分块在缓存中存放
TCP如何实现可靠传输
上述机制被称为自动重传请求,ARQ
要想提高信道利用率,就要提升传输时间 TD
流水线传输
- 发送方可连续发送多个分组,不必没法玩一个分组就停顿下来等待对方确认
- 由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率
累计确认
接受方一般采用累计确认的方式
- 优点:容易实现,信道利用率高
- 缺点:不能像发送方反应出接收方已经正确收到的所有分组的信息
TCP报文段的首部格式
-
固定部分(20字节)
- 序号
分段的数据包开头的第一个字节在字节流中排第几,序号就是几 - 确认号
让发送者下一个分段发送第n个字节 - 数据偏移
记录数据包从多少位开始有数据
四位二进制,最大15
一位代表4个字节
最大60(固定20字节,所以可变长度最多40字节) - 记录
- URG
如果是1的话可以不排队,直接传输停止 - ACK
0的话确认号无效,1有效 - SYN
建立会话请求 - PSH
为1的话在接收端可以插队,直接放到最前 - RST
若为1,说明TCP会话发生了严重的错误,要中断 - FIN
传完要释放连接的时候FIN设为1
- URG
- 窗口
接受缓存的最大长度
- 序号
-
可变部分
TCP具体如何实现可靠传输
- 以字节为单位的滑动窗口技术
超时重传时间的选择
TCP没法送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到了但是还没有收到确认,就要重传这段报文
超时重传时间应率大于上面的出的加权平均往返时间RTTs
RFC2988推荐的α值为1/8
越小的话说明设置的越精确