自己的小网站
运输层
主机到主机数据传输,负责从应用层接收消息,并传输应用层的message,到达目的后将消息上交应用。
–TCP, UDP
运输层服务
•在运行不同主机上应用进程之间提供逻辑通信
•运输协议运行在端系统中
–发送方:将应用报文划分为报文段(segment),传向网络层
–接收方:将报文段重新装配为报文,传向应用层
运输层协议
–TCP和UDP
复用和分解
多路分解:在接收端,运输层检查这些字段,标识出接收接收套接字,进而将报文定向到该套接字,将运输层报文段数据交付到正确的套接字的工作。
多路复用:在源主机从不同套接字种收集数据块,并为每个数据块封装上首部信息,从而生成报文段,然后将报文段传递到网络层。
UDP和TCP
UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP的正式规范是IETF RFC768。UDP在IP报文的协议号是17。
•基于网络层IP服务,几乎没有太多扩展–复用和分解–简单的错误检测checksum
•“没有不必要的,”“基本要素” 互联网传输协议
•“尽力而为”服务,UDP段可能会发生:–丢包–对应用程序交付失序
•无连接:
–在UDP发送方和接收方之间无握手
–每个UDP段的处理独立于其他段
UDP的优点
•无连接创建过程 (时延)
•简单:在发送方、接收方无连接状态,不需要维护
•段首部小
•无拥塞控制: UDP能够尽可能快地传输
TCP(传输控制协议)提供的是面向连接、可靠的字节流服务。当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
TCP建立连接需要三次握手
第一次:
客户端 - - > 服务器 此时服务器知道了客户端要建立连接了
第二次:
客户端 < - - 服务器 此时客户端知道服务器收到连接请求了
第三次:
客户端 - - > 服务器 此时服务器知道客户端收到了自己的回应
到这里, 就可以认为客户端与服务器已经建立了连接.
UDP和TCP的区别
TCP(传输控制协议)提供的是面向连接、可靠的字节流服务。当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP(用户数据报协议)是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
由于UDP缺乏拥塞控制(congestion control),需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中,增加主机拥塞控制,来减小这个潜在的问题。
可靠数据传输原理
可靠性在应用层、运输层、数据链路层的重要性
网络领域关键问题按重要性排序,top10之一!
无错,无丢,无乱
111111 发送方 1111111111111111111111111111111111 接收方
1111111111111111111111111 不可靠信道
可靠数据传输协议
•底层信道可能翻转分组中的位(bit)—位错误
–利用 校验和 检测位错误
•如何从错误中恢复 ?
–确认机制(Acknowledgements, ACK): 接收方显式地告知发送方分组已正确接收
–NAK: 接收方显式地告知发送方分组有错误
–发送方收到NAK 后 ,重传分组
•基于这种重传机制的rdt协议称为ARQ(Automatic Repeat reQuest) 协议
•Rdt 2.0 中引入的新机制(在rdt1.0上更新的机制)
–差错检测
–接收方反馈控制消息: ACK/NAK
–重传
rdt2.2
•真的需要ACK和NAK这两种确认消息吗?
•rdt2.2:一种无NAK的协议
•与rdt2.1一样的功能,仅使用ACK
•代替NAK,接收方对最后正确接收的分组发送ACK
–接收方必须明确地包括被确认分组的序号
•在发送方冗余的ACK导致如同NAK相同的动作:
•重传当前分组
rdt3.0:具有差错和丢包的信道
新假设:下面的信道也能丢失分组(数据或ACK)
–检查和、序号、ACK、重传
–将是有帮助的,但不充分