TCP/IP基础知识

1、OSI/ISO 参考模型(是ISO制定的一种 设计和描述计算机网络通信的基本框架):
它是一种理想的通信框架,在实际中并未广泛应用;

应用层 —————— APDU —————— 提供应用程序间的通信;
表示层 —————— PPDU —————— 处理数据的格式,数据加密等;
会话层 —————— SPDU —————— 建立、维护、管理会话;
传输层 —————— segment —————— 建立端到端的连接(可检测路由器上丢失的包);
网络层 —————— packet 包 —————— 寻址和路由选择(各子网之间的路由选择,分组,重组数据);
数据链路层 ———— frame 帧 —————— 介质访问,链路管理(对bit加上一些格式,达到可靠、无差错的传输);
物理层 —————— bit —————— 比特流传输(提供电气上的规范,如:RS-232,RJ-45(水晶头))。

2、TCP/IP 四层模型:

这里写图片描述

3、对等通信

对等层传输的数据 是 逻辑流

4、封装和分用(解封)的概念

5、端口是什么?

IP ------>  标识一台主机
端口 ----->  标识一台主机上的一个服务(端口号是一个16位的无符号整数)

0 ~ 1023 的端口号都是有IANA分配的一些众所周知的端口号  例如:21 是FTP服务的端口号
1024 ~ 49151 : 注册端口,不受IANA的控制
49152 ~ 65535 : 动态端口/私有端口

6、最大传输单元(MTU)

对于以太网来说,MTU是对数据帧的长度的限制,其最大值为1500个字节; 
对于IEEE802.3来说,MTU的最大值是1492个字节;
在IP层有一个要传输的数据报,且 该数据报的长度 > 链路层MTU时,IP层就会进行分片;
如果两台通信主机处于不同的网络,则选择链路层MTU最小的作为通信的MTU.

7、以太网的帧格式

这里写图片描述

有三种数据类型 : (1)0800 —> IP数据报 (46 ~ 1500 字节); (2)0806 —-> ARP请求/应答 (28字节); (3)8035 —-> QARP请求/应答(28字节)

8、ICMP 用于传输差错信息,时间、回显、网络信息等控制信息。

如:当 IP 层向链路层传数据时,需把IP地址转化为MAC地址,如果发生错误,不能转化为MAC地址(说明该IP地址就不存在)时,会通过ICMP协议向云端发送错误信息。
再如:当 IP 层传输的数据长度大于MTU,但我们又把IP层设置为 不允许分片 时,就会出错,此时,也通过ICMP协议通知云端。
又如:Ping 程序(判断对等方是否可达)就是把数据封装成ICMP协议格式实现的。

9、ARP协议:

通过广播发送给网络上的所有主机,响应它的主机(相匹配的)会把自己的MAC地址发送给它。

下面是 Ping程序的执行过程:
这里写图片描述

10、RARP协议(常用于无盘工作站):

一般会把 IP 地址保存在配置文件中,对于无盘工作站,没有磁盘,就无法保存 IP 地址至配置文件中,
所以需要向RARP服务器发送请求,从而获得MAC对应的本机 IP。

11、IP 层数据报的格式:
这里写图片描述

版本号:IPv4(4位), IPv6(6位);
首部长度:以32位的字为单位,(4位),所以首部长度最大为60个字节(实际上首部最小也要20个字节);
数据报总长度(16位):以字节为单位,最大为65535个字节;
标识:用来标识一个IP包,每发送一个IP包,标识位会+1;
TTL(生存时间):最多可经过的路由器的数量,避免数据报在路由器之间不断循环;
协议类型:IP层上承载的哪个高级协议(ICMP、IGMP、TCP、UDP);
头部校验位:用 网际校验和,而不是CRC;(省时)

***反码算数运算:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。
网际校验和算法:
在发送方,先把被校验的数据划分为许多16位字的序列。如果数据的字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。用反码算数运算把所有16位字相加后,然后再对和取反码,便得到校验和。
在接收方,将收到的数据报(包括校验和字段),将所有16位字再使用反码算数运算相加一次,将得到的和取反,即得出校验和的计算结果。如果数据报在传输过程中没有任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。***

12、TCP的特点:
(1)基于字节流的传输服务;
(2)面向连接
(3)可靠传输
(4)缓冲机制
(5)全双工
(6)流量控制

13、TCP报文格式:
这里写图片描述

序号:这个报文段中第一个数据字节的序号;
确认号:ACK=1时有效,确认号表示期望收到的下一个字节的序号;
保留位:必须为0
6个标志位:(1)URG:紧急指针有效 ;(2)ACK:确认号有效;(3)PSH:接收方应尽快将这个报文段交给应用层;(4)RST:连接重置;(5)SYN:同步序号用来发起一个连接;(6)FIN:表示将要终止一个连接;
紧急指针:是一个正的偏移量,与序号字段中的值相加表示紧急数据租后一个字段序号;
选项:MSS(最长报文大小),默认为536(20+20+536 = 576(MTU))

14、TCP连接的三次握手:
这里写图片描述

A—>B:SYN a : 意味着这个数据能到达B端点,但A并不知道能到达B;
B—>A:SYN b,ACK a+1:意味着数据能到达A,但B并不知道能到达A;
A—>B:ACK b+1:互相都知道数据能到达,从而建立了全双工的连接。

15、TCP连接终止的四次握手:
这里写图片描述

A 调用 close() 终止连接时,发送 FIN x, ACK y, B收到 FIN 字段后,立即响应调用发送 ACK x+1;(拆除了A—>B的连接)
B 调用 close() 终止连接,发送 FIN y, ACK x+1, A收到 FIN 字段后,立即响应调用发送 ACK y+1;(拆除了B—>A的连接)

由于内核收到 FIN 字段,立即调用发送 ACK,而close()是应用层调用的,所以会有时间差。

16、TCP如何保证可靠性:

不可靠:(1)差错:使用校验和减少差错;(2)丢包:TCP使用超时重传机制+确认机制来减少丢包问题;(3)失序:序列号(根据序列号进行重排序);
(4)重复:序列号

超时重传:TCP发出一个段后,启动一个定时器,等待目的端确认收到,如果不能及时收到一个确认,重传这个数据报。

17、滑动窗口机制:

用于流量控制,他即可用于链路层(以帧为单位确认),也可用于传输层(以字节为单位确认)。
TCP头部有个 窗口大小,在建立连接时,会通知各自的接收窗口大小,以及MSS(为了防止IP层数据长度大于MTU而分片)。

18、UDP特点:
(1)无连接
(2)不可靠
(3)一般更高效

19、UDP的格式:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zyx_0604/article/details/72632547