目录
4.流量控制的特点
一,五层体系
应用层 | |
传输层 | 为应用层提供通信服务,使用网络层的服务 |
网络层 | |
数据链路层 | |
物理层 |
- 传输层功能
- 传输层提供进程与进程间的逻辑通信*(网络层提供主机之间的逻辑通信)
- 复用和分用
- 传输层对收到的报文进行差错检测(网络层就只用检测IP数据报的头部)
- 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP
复用:应用层所有的应用进程都可以通过运输层再传回网络层
分用:运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程
- 传输层的寻址和端口(逻辑端口/软件端口)
- 端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的
- 端口号长度16bit,能表示65536个不同的端口号
在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的进程。
套接字(socket)=(主机IP地址,端口号)
二,传输层的两个协议
1.TCP VS UDP
TCP:可靠,面向连接,时延大,适用于大文件
UDP:不可靠,无连接,时延小,适用于小文件
2.UDP
1 主要特点![](https://i-blog.csdnimg.cn/blog_migrate/7303fdf4615ed3e8f2b92e551d139b30.png)
3.面向报文:适合一次性传输少量数据的网络应用。
应用层给UDP多长的报文,UDP就照样发送。即一次发送一个完整报文。
6.TCP首部有20个字节
应用程序必须选择合适大小的报文。
若报文太长,IP 层在传送时可能要进行分片,降低 IP 层的效率。
若报文太短,会使 IP 数据报的首部的相对长度太大,降低 IP 层的效率。
2.UDP首部格式
(1) 源端口:源端口号。在需要对方回信时选用。不需要时可用全 0。
(2) 目的端口:目的端口号。终点交付报文时必须使用。
(3) 长度:UDP 用户数据报的长度,其最小值是 8(仅有首部)。
eg:数据字段7个字节,UDP长度填上15.
(4) 检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃。
3.UDP校验
17的含义:IP数据报首部的协议字段,说明数据部分使用的是什么字段,传输层UDP对应的协议字段值对应17;
UDP长度:UDP首部8B+数据部分长度(不包括伪首部);
伪首部只有在计算检验时才出现,不向下传送也不用向上递交。
特殊情况: 当求和遇见溢出的时候,进行回卷(回卷的补充在下面),得到的结果放在 UDP 报文段中的检验和字段。
所谓 “回卷” 就是当进行 16 比特的加法运算的时候,如果进位到 17位,则将第 17 位和后 16 位进行加法和运算
eg:
0110011001100000
0101010101010101
1000111100001100
相加得:1 0100 1010 1100 0001
此时用 1 + 0100 1010 1100 0001 = 0100 1010 1100 0010
3.TCP
- TCP特点
(1)TCP是面向连接的运输层协议:应用程序在使用TCP协议之前,必须先建立TCP连接,在传送数据完毕后,必须释放已经建立的TCP连接。
(2)每一条TCP连接都只能有两个端点
(3)TCP提供可靠支付的服务
(4)TCP提供全双工通信:发送缓冲和接受缓存
(5)面向字节流
- TCP报文段首部
源端口和目的端口:各占两个字节。与UDP类似
序号(seq):本报文段所发送的数据的第一个字节的序号
确认号(ack):若确认号等于N则表明到N-1为止的所有数据都已正确收到
数据偏移:TCP报文段首部长度
保留:占6位
URG:1:有紧急数据,应尽快传送
ACK:1:确认号字段有效。TCP规定在连接建立后所有传送的报文段都必须把ACK置为1
PSH:推送 1:尽快交付接收应用进程
RST:1:表明TCP连接中出现严重差错,必须释放连接,再重新建立运输连接
SYN:1:这是一个连接请求或连接接受的报文
终止FIN:1:表明报文段全部发送完毕,并要求释放运输连接
窗口:从本报文段首中的确认号算起,接收方目前允许对方发送的数据量(动态变化)
检验和:
紧急指针:URG=1才有意义,指出了本报文段中的紧急数据的字节数。值得注意的是,窗口为0也可发送紧急数据
选项:长度可变,最长40字节
- TCP连接管理(3次握手)
- TCP连接释放(4次握手)
4.流量控制的特点
三,课本重点习题答案
端口的作用是对TCP/IP体系的应用进程进行统一标志,使运行不同操作系统的计算机的应用进程能够相互通信
源端口:0632转换为2进制:1586
目的端口号:0045 -> 69
用户数据报总长度:001C -> 28
数据部分长度:28-8=20(首部占据8字节)
客户发送给服务器
因为目的端口号 69 < 1023,是常用的服务端口,所以这个数据报是发往服务器端的
0~1023:常用的服务端口
1024~49151是被注册的端口,也成为“用户端口”
其中 1024~5000为临时端口69端口号是TFTP
常见端口号
(1)CB84:52100
(2)000D:13
(3)001C 28
4:20
5:13,客户发往服务器
6:从 RFC 867 可以得知,这个客户进程是 Daytime。当 Daytime 服务器收到客户发送的 UDP 用户数据报后,就把现在的日期和时间以 ASCII 码字符串的形式返回给客户。
(1)处于ESTABLISHED状态又能够收到FIN报文段,只能是服务器端,当这个服务器端收到 FIN 时,服务器就向客户端发送 ACK 报文段,并进入到 CLOSE-WAIT 状态,这是被动关闭。请注意,这时客户端不会再发送数据了,但服务器端如还有数据要发送给客户端,那么还是可以继续发送的。
(2)应用程序发送 “关闭” 报文给服务器,表明没有数据要发送了。这时服务器就应当发送 FIN 报文段给客户,然后转换到 LAST-ACK 状态,并等待来自客户端的最后的确认。
收到ACK报文段,TCP 客户不发送任何报文段,客户端从FIN-WAIT1到FIN-WAIT2
收到FIN报文段,TCP发送ACK报文段并进入TIME-WAIT状态
当发生了超时,也就是经过2MSL后,TCP客户进入CLOSED状态