第五章 传输层_首部 
TCP 传输控制协议
需要将要传输的文件分段 传输 建立会话 可靠传输 流量控制
UDP 用户数据报协议
一个数据包就能够完成数据通信 不需要建立会话 不需要流量控制 不可靠传输 屏幕广播(虽然一个包传不完但还是UDP协议,因为不需要保证可靠性,不需要建立会话) 多播,广播
 

传输层协议和应用层协议之间的关系

第五章 传输层_服务器_02

 

 

其中DNS可以用TCP也可以UDP,绝大多数用的是UDP.
http=TCP+80 https=TCP+443 共享文件夹=TCP+445 POP3=TCP+110
 

服务和应用层之间的关系

服务使用 TCP或UDP的端口侦听客户端的请求
客户端使用IP地址定位服务器 使用目标端口 定位服务
可以在服务器网卡上设置只开放必要的端口 实现服务器网络安全
 

如何查看服务侦听的端口

netstat - an
netstat -n 查看建立的会话,
netstat -nb 查看建立会话的进程。
telnet 192. 168. 80. 100 3389 测试到远程计算机某个端口是否打开
 
 

传输层功能 

1.为相互通信的应用进程提供了逻辑通信

与网络层协议的主要区别
IP协议的作用范围是主机之间的通信,用协议号区分上层,而TCP,UDP是进程之间,用端口号区分上层.

2.传输层还要对收到的报文进行差错检测.

3.传输层提供面向连接和无连接的服务

端口

端口用一个16位端口号进行标志。0-65535
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
熟知端口 0-1023
登记端口 RDP 3389
客户端端口 49152-65535
 

UDP

主要特点

UDP是无连接的,即发送数据之前不需要建立连接。
UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。
UDP支持一对一、一对多、多对一和多对多的交互通信。
UDP的首部开销小,只有8个字节。
第五章 传输层_传输层_03
计算检验和加伪首部
 

TCP

主要特点

TCP是面向连接的传输层协议。
每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。
TCP提供可靠交付的服务。
TCP提供全双工通信。
面向字节流。
第五章 传输层_服务器_04
 
TCP把连接作为最基本的抽象。
每一条TCP连接有两个端点。
TCP连接的端点不是主机,不是主机的P地址,不是应用进程,也不是传输层的
协议端口。TCP连接的端点叫做套接字(socket)。
端口号拼接到IP地址即构成了套接字。
套接字=IP地址+端口号
 

TCP如何实现可靠传输

可靠传输的工作原理--停止等待协议
第五章 传输层_首部_05
第五章 传输层_数据_06
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。
ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
 
停止等待的优点是简单,但缺点是信道利用率太低(信道利用率=发的时间/总时间)。
 
流水线传输 连续ARQ协议
第五章 传输层_端口号_07

累计确认

接收方一般采用累积确认的方式。
优点是:容易实现,信道利用率高。
缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。
 

TCP报文段首部格式

 第五章 传输层_首部_08
序号:数据部分第一个字节是整个数据的第几个,首次发送的序号一般采用ISN算法确定,也就是每隔几毫秒一个数+1
确认号:是下一个数据包应该是哪个序号
数据偏移:报文段多少开始是TCP数据部分,因为占4比特所以最高表示15,15*4=60.所以TCP首部最多60个字节,选项最多40个字节
保留:6位没有用的
URG:如果为1,不进缓存不排队,紧急指针有效,紧急指针内容不排队
ACK:如果是1,确认号有效
SYN:建立会话的时候,ack=0,syn=1,响应时ack=1,syn=1.
可以通过建立会话发送syn=1的报文段将服务器死机。
syn攻击就是随机不同源IP发送,而land攻击是让源IP等于目标IP
 
PSH:置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
RST:置1时重建连接。如果接收到RST位时候,通常发生了某些错误,例如f5刷新。
FIN: 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。
窗口:告诉其发送缓存和接受缓存大小,发送窗口是由接受窗口决定的
检验和:和UDP一样,也要加伪首部,只是加的协议号不一样,运算方式一样
紧急指针:指明紧急数据包的尾部在哪
选项:指定序列包大小,支不支持选择性确认(SACK,就是告诉其哪一段缺了),时间戳...
建立会话:
第一次发出告诉服务器支持最大数据包,服务器响应发出支持最大数据包和缓存最大多少,然后再告诉服务器自己缓存最大多少,然后开始正式发送。
 
最接近真实的通信过程
以字节为单位的滑动窗口技术 环形缓冲区窗口
 

TCP的拥塞控制

出现资源拥塞的条件:
对资源需求的总和>可用资源
拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素
流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制,它所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
第五章 传输层_首部_09
发送方维持拥塞窗口cwnd (congestion window)
发送方控制拥塞窗口的原则是:
     只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。
     只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
 

慢开始和拥塞避免算法

第五章 传输层_传输层_10
 

快重传

第五章 传输层_传输层_11
发送窗口=min(接收窗口(rwnd),cwnd)
 

TCP的传输连接管理

三个阶段:连接建立,数据传送,连接释放
TCP连接的建立都是采用客户服务器方式
主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。
 

三次握手

第五章 传输层_服务器_12
 

连接释放 四次挥手

第五章 传输层_数据_13