-
运输层为相互通信的应用进程提供逻辑通信
从应用层看,只要把应用层的报文交给下面的运输层,运输层就可以把这报文传送到对方的运输层 -
复用和分用
复用:发送方的不同应用进程之间都可以使用同一运输层协议传送数据
分用:运输层剥去报文的首部后能够把这些数据准确交付到目的应用进程 -
端口和套接字的意义
协议端口号,特指软件端口号 应用层各种协议进程与运输实体进行层间交互的一种地址
TCP连接的端点叫套接字或者插口
套接字socket={IP地址:端口号} -
端口号分为两大类
1)、服务器端使用的端口号
熟知端口号 0-1023 让所有用户都知道,否则因特网上的其他应用进程就无法和它进行通讯
登记端口号 1024~49151
2)、客户端使用的端口号 49152-65535
留给客户进程运行时才动态选择的
应用程序 | FTP | DNS | HTTP | SMTP |
---|---|---|---|---|
熟知端口号 | 21 | 53 | 80 | 25 |
- UDP中计算校验和
要在UDP用户数据报之前增加12个字节的伪首部,伪首部几步向下传送也不向上递交 - 无连接的UDP的特点
- 面向连接的TCP的特点
面向字节流:流入进程或从进程流出的字节序列。应用程序和TCP交互是一次一个数据块 - 在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议
停止等待协议
每发送一个分组就停下来,等收到了对方对该分组的确认之后再继续发送下一个分组。每发送完一个分组就设置一个超时计时器,如果在规定的时间内没有收到分组的确认消息,就会进行超时重传。在规定时间内收到了确认消息就会撤销计时器。
同时需要注意三点:①计时器设置的超时时间应该稍微长于分组的往返时间,如果时间太长通信效率就会很低,如果时间过短会产生不必要的重传,浪费网络资源。②为每一个分组都设有一个副本,以便超时重传时使用,当收到了分组的确认后再进行清除。③分组和确认分组都必须进行编号,这样才能明确是哪一个分组收到了确认。
(ARQ协议)
假设分组的确认丢失了,发送方在设定的超时时间内没有收到确认,不知道是自己发送的分组丢失还是接收方的确认丢失,因此发送方需要重传分组。当接收方收到了分组后就丢失这个分组,重新发送确认。
还有一种情况是分组没有丢失但是晚到了,发送端会受到重复确认,会收下并且丢弃,接收端仍然会收到重复的分组,同样丢弃并确认。
上述确认和重传机制,即ARQ automatic repeat request,自动重传请求,接收端不需要向发送端发送重传请求,当超过指定时间时发送端会自动进行超时重传。
连续ARQ协议
连续ARQ规定每收到一个确认就把发送窗口向前滑动一个分组的位置,接收方一般采用累积确认的方式,就是说接收方不必对收到的分组逐个确认,只需要对按序到达的最后一个分组进行确认。优点是实现容易,即使确认丢失也不必重传,确认是不能向发送方反映出接收方已经正确收到的所有分组的消息。例如发送方发生了5个分组,第3个分组丢失了,接收方只能确认前2个,发送方必须把后面3个都重新发送 - TCP的滑动窗口、流量控制、拥塞控制和连接管理