指引
- 运输层的功能
- 运输层协议UDP和TCP
- TCP可靠传输的实现
- TCP的流量控制
- TCP的拥塞控制
- TCP的运输连接管理
主要的协议
- 网络层:IP(RIP OSPF BGP)ICMP IGMP ARP
- 传输层:TCP UDP
- 应用层:http https ftp DNS SMTP PoP3 RDP
传输层两个协议应用场景
- 网络中的计算机通信无外乎有以下两种情况:
- 要发送的内容多,需要将发送的内容分成多个数据包发送。
- 要发送的内容少,一个数据包就能发送全部内容。
TCP:分段 编号 流量控制 拥塞避免 可靠传输 建立连接(协商参数:选择性确认,最大报文) 通信结束需要释放连接 netstat -n(查看会话)
UDP:要传输的内容一个数据包就能完成数据通信 不需要分段 流量控制 传输成功与否 由应用层判断 不建立会话 多播
传输层和应用层之间的关系
http=TCP+80端口
https=TCP+443端口
ftp=TCP+21端口
SMTP=TCP+25
POP3=TCP+110
RDP=TCP+3389
共享文件夹=TCP+445
SQL=TCP+1433
mySQL=TCP+3306
DNS=UDP+53 or TCP+53
telnet=TCP+23
应用层协议和服务之间的关系
wondows操作系统上的服务:
- 为本系统提供的服务
- 为网络中其他计算机提供服务的服务 使用TCP或者UDP的某个端口侦听客户端的请求。
查看本地侦听的端口:netstat -an
查看建立的TCP连接:netstat -n
客户端端口的作用
- 客户端软件可以同时访问多个服务器,客户端会为每个出去的流量分配一个唯一的源端口。
- 服务器上的服务侦听的端口不能冲突,否则将会造成服务器启动失败。
服务运行后在TCP或者UDP的某个端口侦听客户端请求
Web
ftp
smtp
pop3
- 用端口来定位服务
- 用IP地址来定位计算机
查看自己计算机侦听的端口
netstat -an
测试远程计算机打开的端口
telnet 10.7.1.53 21
其中21代表端口,如果访问端口失败,说明不能访问这个服务 - IP协议的作用范围(提供主机之间的逻辑通信)
- TCP和UDP协议的作用范围(提供进程之间的逻辑通信)
运输层的两个主要协议
TCP/IP的运输层有两个不同的协议:
- 用户数据报协议UDP,UDP传送的协议数据单元是UDP报文或者叫用户数据报
- 传输控制协议TCP,TCP传送的协议数据单元是TCP报文段(segment)
TCP与UDP
- UDP在传送数据之前不需要事先建立连接,对方的运输层在收到UDP报文之后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。
- TCP则提供面向连接的服务。TCP不提供广播或者多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使得协议数据单元的首部增大很多,还要占用许多的数据处理资源。
端口和网络安全的关系
- 客户端和服务器之间的通信使用应用层协议,应用层协议使用传输层协议+端口标识,如果在网络设备封掉TCP或者UDP的某个端口,就不能访问其对应的服务,就可以实现网络安全。如图
- 防火墙就是一个实现网络安全的工具,它可以只允许某项服务的流量进入,其它的拒绝进入。
- 设置服务器网络安全,只开放必要的端口。
- 在windows上可以通过设置TCP/IP筛选和windows防火墙来实现。
端口和服务之间的关系
TCP的端口
- 端口用一个16位端口号进行标志。
- 端口号只具有本地意义,即端口号只是为了标志本计算机应用层的各进程。在因特网中不同的计算机的相同端口号是没有联系的。
熟悉的三类端口:
(1)熟知端口,数值一般为0~1023。
- FTP:21
- TELNET:23
- SMTP:25
- DNS:53
- HTTP:80
- HTTPS:443
- RDP:3389
(2)登记端口号,数值为1024~49151
(3)客户端口号,数值为49152~65535
UDP的首部格式
如图:
- 从此图中,联系之前所学的IP数据报,可以发现,UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
- 虽然UDP用户的数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的功能。
- 该数据包在网络层的时候加上了目标地址和源地址,但是在运输层,加上了目标端口和源端口。
UDP的主要特点
- UDP是无连接的,即发送数据之前不需要建立连接。
- UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
- UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。
- UDP支持一对一、一对多、多对一和多对多的交互通信。
- UDP的首部开销小,只有8个字节。
用户数据报UDP有两个字段:数据字段和首部字段,首部字段有8个字节,由4个字段组成,每个字段都是两个字节。分别为源端口、目标端口、长度、校验和。
TCP协议的特点
- TCP 如何实现可靠传输
- TCP协议如何实现流量控制
- TCP协议如何避免网络拥塞
传输控制协议TCP概述
- TCP是面向连接的传输层协议。
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。
- TCP提供可靠交付的服务。
- TCP提供全双工通信。
- 面向字节流。
TCP的连接
- TCP把连接作为最基本的抽象
- 每一条TCP连接有两个端口。
- TC连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端点叫做套接字(socket)。
- 端口号拼接到IP地址即构成了套接字。
- 套接字socket=(IP地址:端口号)
- 每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
- TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}
TCP报文段格式
- 在发文件时,文件数据是一段一段的,传输层会给文件增加一个TCP首部。
TCP首部如图:
- TCP报文段有固定字节段(20字节),之后有选项段(长度可变),它是可变长部分,不够的话可以用来填充。
- 所以TCP首部长度并不是固定的,有固定部分和可变部分。
- 在正常传数据时,大多数数据包就是20个字节的首部。但是有的数据包不仅仅用来传数据,还需要商量一些内容,在选项字段会增添一些数据。这个时候就不是20个字节了。
- 首先是源端口和目标端口,各占用两个字节(16位)。
- 然后是序号单独占用4个字节,用来表示该段数据的第一个字节,是整个数据部分的第几个字节。如图:
- 确认号(4个字节)指的是已收到的数据,下一个数据包是开头是第几个字节。如图:在确认第1.2.3.4字节收到之后,就会发送下一个数据包以第5号字节开头的确认包。数据包送达之后,会去掉数据头,把5.6.7.8.9字节放进队列,下一个确认号为10。
- 数据偏移:用来记录该条TCP报文段第几个字节之后,开始是数据段了。只有4位,最大数据只能表示到15,但是一位表示4个字节,总共60个字节。这里也就可以推测出选项部分最多40个字节,因为前面有20个字节的固定部分。
- 保留字段:
- URG表示数据段比较着急,需要优先传送
- ACK 0表示确认号无效,1表示确认号有效
- SYN 表示请求与对方建立会话时为1,对方同意时SYN也为1。注意发送请求时ACK为0,对方同意时,回复的ACK为1.。在会话建立之后的SYN就为0
- PSH值为1,拥有优先权,可以直接提交给应用程序。
- RSY如果为1,说明TCP会话拥有严重错误,需要重新建立连接才可以。
- FIN为1时代表释放连接。