传输层
传输层为运行在不同主机上的进程之间提供给了逻辑通信,而网络层提供了主机之间的逻辑通信。当网络层协议不可靠时,传输层同样可以为应用程序提供可靠的服务。
传输层向高层用户屏蔽了底层网络核心的细节,它使应用进程看见的就好像在两个传输实体之间有一条端到端的逻辑通信信道。当传输层采用面向连接的TCP时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。
- 端口号
数据链路层的SAP是MAC地址,网络层的SAP是IP地址,传输层的SAP是端口。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。端口号的长度为16bit,能够表示65536个不同的端口。
端口是传输层和应用层的服务接口,传输层的复用和分用功能都是通过端口实现。 - 套接字 =(主机IP地址,端口号),它唯一地标识了网络中的一个主机和其上的一个应用进程。
套接字寻址系使得TCP和UDP能够执行多路复用和多路分解。多路复用是指把多个来源的数据导向一个输出,而多路分解是把从一个来源接收的数据发送到多个输出 - UDP
只做了传输协议能够做的最少工作,在IP数据报服务上增加了两个最基本的服务:复用和分用以及差错检测。
UDP数据报包含两个部分:UDP首部和用户数据。UDP首部有8个字节,由4个字段组成(源端口,目的端口,UDP长度,UDP校验和),每个字段占两个字节。 - TCP
TCP是在不可靠的IP层上实现的可靠的数据传输协议。每一条TCP连接只能是点对点的,TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
TCP传送的数据单元称为报文段,TCP报文段可以用来运载数据、建立连接、释放连接和应答。
TCP是面向字节流的(TCP传送时按照一个一个字节来传送),UDP是面向报文的。
TCP连接有两个端点,这两个端点不是主机、不是应用进程、也不是传输层的协议端口,而是套接字。
TCP连接的建立采用客户/服务器模式。主动发起连接建立的应用进程叫做客户机,而被动等待连接建立的应用进程叫做服务器。 -
三次握手
image.png
序号字段seq是指本报文段所发送数据的第一个字节的序号
确认号ack=N,表明到序号N-1为止的所有数据都已正确收到 -
四次挥手
image.png
- TCP可靠传输
可靠传输服务就是要保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。
TCP默认采用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节。
有两种事件会导致TCP对报文进行重传:超时和冗余ACK。
TCP每发送一个报文段,就对这个报文段设置一次计时器,只要计时器设置的重传时间到期但还没收到确认,就要重传这一报文段。
冗余ACK是发送方再次确认某个报文段的ACK,而之前已经收到过该报文段的确认。 - 流量控制
TCP提供一种基于滑动窗口协议的流量控制机制,以消除发送方使接收方缓存区溢出的可能。接收方根据自己接收缓存的大小,动态地调整发送方窗口的大小,这就是接收窗口rwnd,即调整TCP报文段首部中的'窗口'字段值,来限制发送方向网络注入报文的速率。同时,发送方根据其对当前网络拥塞程序的估计而确定的窗口值,称为拥塞窗口cwnd。
发送窗口=min(rwnd, cwnd); - 拥塞控制
拥塞控制是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载
当发送方检测到超时时就采用慢开始和拥塞避免,当发送方接收到冗余ACK时就采用快重传和快恢复。- 慢开始
开始发送TCP报文时,先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。在每收到一个新的报文段的确认后,将cwnd加1,这样每经过一个传输轮次RTT,拥塞窗口cwnd就会加倍,呈指数增长,最后达到阈值,改用拥塞避免算法。 - 拥塞避免
发送端的拥塞窗口cwnd每经过一个RTT就增加一个MSS,而不是加倍,使cwnd线性增长(加法增大);当出现一个超时时,则令慢开始阈值等于当前cwnd的一半(乘法减小),然后将拥塞窗口cwnd重置为1,执行慢开始算法。 - 快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不等待那个报文段设置的重传计时器超时。 - 快恢复
当发送端收到连续三个冗余ACK时,就执行“乘法减小”,把慢开始阈值设为出现拥塞时cwnd的一半,然后把cwnd设置为阈值,然后执行拥塞避免算法(加法增大)。由于跳过了cwnd从1起始的慢开始过程,所以被称为快恢复。
- 慢开始
应用层
- 在C/S模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P思想是整个网络中的传输内容不再保存在中心服务器上,每个结点都同时具有上传、下载功能,各计算机之间大体对等。
- DNS域名系统是因特网使用的命名系统,用来把便于人们记忆的主机名(如www.baidu.com)转换成便于机器处理的IP地址。DNS系统采用C/S模型,协议运行在UDP上,使用53端口。
每个域名服务器不但能够进行一些域名到IP地址的解析,而且具有连向其他域名服务器的信息。 - FTP
FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
FTP采用C/S模式,使用TCP可靠传输,FTP服务器进程由两大部分组成:一个主进程,负责接收新的客户请求;另有若干个从属进程,负责处理单个请求。FTP在工作时使用两个并行的TCP连接,一个是控制连接(端口号21),一个是数据连接(端口号20) - 电子邮件
一个电子邮件系统由三个主要组件:用户代理、邮件服务器、电子邮件使用的协议(SMTP、POP3)
邮件发送协议用于用户代理向邮件服务器发送邮件或邮件服务器之间发送邮件,使用SMTP(推);邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3(拉) - HTTP
HTTP协议是无状态的,使用Cookie加数据库的方式来跟踪用户的活动,进而执行一些个性化的工作。HTTP采用TCP协议,保证了数据的可靠传输。
HTTP可以使用非持续连接和持续连接:
非持续连接:每个网页元素对象(如jpeg图,flash等)的传输都需要单独建立一个TCP连接。
持续连接:万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。
网友评论