1.传输层的两个协议
- TCP:需要将要传输的文件分段 传输 建立会话 可靠传输 流量控制 Eg:邮件发送
- UDP:一个数据包就能够完成数据通信 不需要分段,不需要建立会话,不需要流量控制,进行不可靠传输。Eg:域名解析,QQ聊天,屏幕广播,多播,广播
- Eg:访问网站建立会话 查看会话 netstat -n
- netstat -nb查看是哪一个进程建立的会话
2.传输层协议与应用层协议之间的关系
2.1应用层协议
- 标识应用程序
2.2常见的应用层协议使用的端口
- 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
2.3服务和应用层协议之间的关系
- 服务使用TCP或UDP的端口侦听客户端请求
- 客户端使用IP地址定位服务器,使用目标端口定位服务
- 可以在服务器网卡上设置只开放必要的端口,实现服务器网络安全
2.4服务与端口 端口与安全
-
如何在Windows上安装服务
-
web服务
-
DNS服务
-
SMTP
-
POP3服务
-
-
如何查看侦听的端口
-
netstat -an
-
netstat -n 查看建立的会话
-
netstat -nb 查看建立会话的进程
-
telnet 192.168.80.100 3389 测试远程计算机某个端口是否打开
-
-
如何更改服务使用的默认端口
-
迷惑入侵者 使系统更加安全
-
-
如何设置 Windows网络安全
-
设置本地连接 TCP/IP筛选
-
2.5传输层功能与端口范围
- 传输层为相互通信的应用进程提供了逻辑通信
- 传输层协议与网络层协议的区别
- 传输层的主要功能
- 传输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
- 传输层还要对收到的报文进行差错检测
- 传输层提供面向连接(TCP)和无连接的服务(UDP)
- 传输层的端口
- 端口用一个16位端口号进行标志
- 协议号:TCP 6;UDP 17; IGMP 1;
- 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号使没有联系的
- 端口的范围:0-65535
- 熟知的端口:0-1023
- 登记端口号:RDP:3389 1024-49151
- 客户端端口号:49152-65535
3.UDP
3.1UDP的主要特点
- UDP是无连接的,即发送数据之前不需要建立连接
- UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制
- UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求(多播)
- UDP支持一对一,一对多,多对一和多对多的交互通信
- UDP的首部开销小,只有8个字节
3.2用户数据报协议UDP
3.3UDP的首部格式
3.4计算UDP检验和的例子
- 用到网络层的地址
4.TCP协议概述
4.1传输控制协议TCP概述(特点)
- TCP实现流量控制,拥塞控制
- TCP是面向连接的传输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)
- TCP提供可靠交付的服务
- TCP提供全双工通信
- 面向字节流
4.2TCP的连接
- TCP把连接作为最基本的抽象
- 每一条TCP连接有两个端点
- TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端点叫套接字
- 端口号拼接到IP地址即构成了套接字
5.TCP如何实现可靠传输
5.1可靠传输的工作原理——停止等待协议
5.2确认丢失和确认迟到
5.3可靠通信的实现
- 使用上述的确认和重传机制,就可以在不可靠的传输网络上实现可靠的通信,这种传输协议常称为自动重传请求ARQ
- ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组
5.4信道利用率U
- 停止等待协议的优点是简单,缺点是信道利用率太低
5.5流水线传输
- 发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方确认
- 由于信道上一直有数据不间断的传送,这种传输方式可获得很高的信道利用率
5.6连续ARQ协议
- 滑动窗口可以更好的实现流水线传输
5.7累计确认
- 接收方一般采用累计确认的方式
- 优点是:容易实现,信道利用率高
- 缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息
6TCP首部 端口序号确认号数据偏移
6.1TCP报文段的首部格式
6.2抓包分析TCP首部
6.3TCP首部标记位
- URG:紧急指针(urgent pointer)有效。(1bit)
- ACK:确认序号(acknowledgement )有效。(1bit)
- PSH:传送(push)接收方应该尽快将这个报文段交给应用层。(1bit)
- RST:(reset) 重建连接。(1bit)
- SYN:(synchronous)发起一个连接。(1bit)
- FIN:(finish结束)释放一个连接。(1bit)
- 窗口:此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。(16bit)
- 校验和:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。(16bit)
- 紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。(16bit)
- 选项和填充:可能包括"窗口扩大因子"、"时间"等选项。(32bit)
- SYN:同步标志
同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把 TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。
- ACK:确认标志
确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
- RST:复位标志
复位标志有效。用于复位相应的TCP连接。
- URG:紧急标志
紧急(The urgent pointer) 标志有效。紧急标志置位
- PSH:推标志
该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。
- FIN:结束标志
带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。
7TCP滑动窗口技术以字节为单位实现可靠传输
7.1以字节为单位的滑动窗口
- A的发送窗口是由B的接收窗口决定的
- A窗口里面的内容在未收到B的确认之前不能删除缓存
- A窗口里面的内容在未收到B的确认可以继续发送
- A窗口里面的内容在收到B的确认后20个字节的窗口向后移动,确认已收到的数据删除
- 如果B中间的窗口接受的内容有缺失,确认号是已经收到的连续字节的下一个确认号,也会发送选择性确认
7.2超时重传时间的选择
TCP没发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到,但还没有收到确认,就要重传这一报文段
8TCP流量控制
流量控制是解决客户端与服务器传输速度问题的 ,是通过接收端告诉发送端接收窗口有多大来实现的
9TCP拥塞避免
9.1拥塞控制的原理
- 有拥塞控制的网络
9.2拥塞控制方法-慢开始和拥塞避免
9.2.1.慢开始
9.2.2拥塞避免算法
9.3拥塞控制方法-快重传和快恢复
- 快重传
- 快重传算法首先要求接收方每收到一个失序的分组后就立即发出重复确认(为的是使发送方及早知道有分组没有到达对方)而不要等待自己发送数据时才进行捎带确认。
- 快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段M3,而不必继续等待为M3设置的重传计时器到期。
9.4发送窗口的上限
- 如果把本节所讨论的拥塞控制和接收方对发送方的流量控制一起考虑,那么很显然,发送方的窗口的上限值应当取为接收方窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,也就是说:
- 发送方窗口的上限值 = Min [rwnd,cwnd]
- 当rwnd<cwnd时,是接收方的接收能力限制发送方窗口的最大值。
- 反之,当cwnd<rwnd时,则是网络的拥塞限制发送方窗口的最大值。 也就是说,rwnd和cwnd中较小的一个控制发送方发送数据的速率。
10 TCP传输连接管理
10.1 TCP的连接建立
10.1.1请求建立TCP连接的数据包
10.1.2TCP连接确认数据包
10.1.3确认的确认
10.1.4TCP的连接建立的过程
10.2TCP连接释放
- TCP协议通信结束后,需要释放连接,TCP连接释放过程比较复杂,我们仍结合双方状态的改变来阐明连接释放的过程。
- 数据传输结束后,通信的双方都可释放连接。如图所示,现在A和B都处于ESIABLISHED状态,A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。A把连接释放报文段首部的FIN置1,其序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1。这时A进入FIN-WAIT-1(终止等待l)状态,等待B的确认。
-
10.3实战:查看TCP释放连接的数据包