一、作用
两台主机进行通信,不仅仅需要IP地址,还有port,所以准确的说应该是主机上的应用程序进程进行通信。实现复用和分用的功能
复用:应用层的所有应用程序都通过运输层再传送到网络层
分用:运输层从网络层收到发送给各个应用程序的数据,然后分别交付指明的各应用程序
二、网络层和运输层的区别
1、网络层为主机之间提供逻辑通信
2、运输层为应用程序之间提供端对端的逻辑通信
三、端口号
端口号是16位的,所以最大是65535,端口号只具有本地意义
服务端使用的端口号:
1、熟知(系统)端口号 0-1023
2、登记端口号:1024-49151
3、客户端使用的端口号:49152-65535
四、UDP
UDP就是用户数据报协议
4.1、特点:
1、传输属于之前不需要建立连接,发送数据不需要任何确认,不保证可靠交付。
2、面向报文:应用层交给UDP多大的报文,UDP直接发送。因此报文的大小要合适,太长、太多都会导致IP层的效率下降。
3、没有拥塞控制
4、支持一对一、一对多、多对一、多对多的交互通信。
5、首部开销小,只有8byte,比TCP的20byte要短。
用户数据报UDP有两个字段:数据字段和首部字段
4.2、首部字段:
8byte,四个字段,每个字段的长度都是2byte,源端口、目标端口、长度、检验和
UDP通信需要port,但是因为是无连接的,所以不需要使用套接字
4.3、伪首部:
只是为了检验和临时加的,不向上下传递
五、TCP
传输控制协议 提供面向连接的服务
5.1、特点:
1、在传输数据之前必须先建立连接,结束之后要释放连接,只能点对点的连接
2、提供可靠交付的服务,TCP传送的数据,无差别、不丢失、不重复、按顺序到达。
3、全双工通信:TCP允许通信双方的应用程序在任何时候都能发送数据。client和server都设有发送缓存和接收缓存,用来临时存放
双向通信的数据
4、面向字节流
5.2、TCP使用场景:
1、聊天消息传输
2、单人语音、视频聊天等
3、几乎UDP能做的TCP都能做到,只是要考虑复杂性、性能问题
4、无法进行广播、多播等操作
5.3、发送报文:
TCP不关心应用程序一次把多长的报文发送到TCP的缓存中,而是根据对方返回的窗口值和当前网络的拥塞程度来决定一个报文段应该包含
多少字节,而UDP的报文长度是应用程度决定的。每一条TCP连接都有两个连接点,这个连接点称为套接字(socket)或插口。
套接字的表示:
端口号拼接到IP地址,例如192.168.22.37:8080
5.4、可靠性传输:
TCP发送的报文段交给网络层发送,IP层不能保证可靠性传递,所以需要TCP提供可靠性传递
5.4.1、停止等待协议:
传输的数据单元称为分组,每发送一个分组就停止发送,知道得到对方的确认,然后再发送下一个分组
5.4.2、超时重传:
为每个发送的分组设置一个超时计数器,A只要经过一段时间没有收到确认,就认为刚才的分组丢失,重新发送刚才的分组
5.4.3、确认丢失:
确认丢失了,A没有收到,重新发送给B一个分组,B又收到重传的分组M1,要采用两个行动:
1).丢弃这个重复的分组
2).向A发送确认
5.4.4、确认迟到:
A收到重复的确认立马丢弃,B收到重复的分组,也要丢弃,并且重新确认分组
上述的可靠性传输协议就是自动重传请求ARQ Automatic Repeat reQuest
总结:
重传的请求是自动进行的,接收方不需要主动要求发送方重传某个错误的分组
停止等待协议优点就是简单,但是信道利用率太低,为了提高利用率,发送方可以不使用等待停止协议,采用流水线传输,
就需要了解连续ARQ协议和滑动窗口协议
5.5、连续ARQ协议:
位于发送窗口中的每个分组都可以按顺序连续发送出去,不需要等待对方的确认,这样信道的利用率就提高了
发送方:每收到一个确认,发送窗口向前滑动一个分组的位置
接收方:不必对收到每个分组逐个发送确认,而是在收到几个分组后,对按次序到达的最后一个分组发送确认,就表示:到这个分组为
止之前的所有分组都收到了,这就是累计确认
优点:
容易实现,即使确认丢失也不用重传,但是如果有分组丢失,就需要将丢失的分组进行重传,称为Go-back-N
缺点:
不能向发送方反馈所有收到的正确分组的信息