网络层和传输层协议
一、网络层 三层
网络层:定义IP地址,连接不同的媒介类型,最佳路径选择进行数据包的转发。
网络层封装数据的核心:源IP和目标IP
**网络层封装数据:**IP头部,源IP和目的IP等形成一个数据包。
IP 数据包里面包含的内容:
version 版本信息
首部长度:表示IP数据包头部的长度20字节,长度可以变,但必须为20的倍数,一般为20字节。IP头部。
total length:表示整个IP数据包的长度。最大65535字节。
identification:数据包的标识符,上层数据(传输层)进行分片,会给分片的数据进行编号,保证分片不会被错误的重组。
**Flags:**标志字段,数据包可以分片或者数据包不能分片,如果不能分片的包直接发出,如果分片的包,确保分片包的最后一个分片已发出。
Reserver bit: 保留位 一般为0
**fragment: ** 0为不分段,1表示包太大要丢弃
more fragment: 1表示发送了一部分 0表示已经全部发送
Fragment Offset:段偏移量。包含信息是指一个分片序列中,如何包各个分片重新连接。每个分段数据与起点之间的位置。分片的序列如何按照原有的顺序连接起来,以及按照什么样的数据进行连接。 保证数据的完整性。
**Protocol:**协议字段,IP传输过程中使用的协议。
**Header Checksum:**首部校验和,接收方和网关服务器(路由器)来校验数据是否被改动过。安全机制。
Sourse Address: 源IP。
Destination Address: 目的IP 。
端口----------服务,程序。每个程序都有特定的端口。
网络层重要协议:ICMP 、ARP
ICMP:ping 命令
ICMP网络层协议
ICMP最大的作用就是用来进行网络故障排查。
MTU:最大传输单元。1500 表示对方能接收多少
本地回环地址:127.0.0.1 自我测试,测试自身网络是否通畅。调试和开发。
网络ping不通问题解决方案:
1、ping 127.0.0.1 查看本身是否正常通畅。
2、硬件问题:网线问题,网卡问题
3、双方地址是否正确
4、网关服务器:路由器是否正常
5、交换机问题
6、防火墙问题:是否有阻断规则。
ARP协议:地址解析协议
网络层的IP地址转换为数据链路层的mac地址。
ARP表,把IP地址和Mac地址形成一个映射关系。
ARP协议工作原理:
1、在局域网当中,对所有设备进行广播(网段内最后一个地址)。
2、只有符合条件的设备会对广播进行响应,找到IP地址对应的Mac地址。其他设备不会响应。
3、会把IP地址和Mac地址的映射关系保存到设备设备当中。会把双方的设备都保存到ARP表中。
4、保存时间180秒
5、保存时间失效,后续在进行传输,又要继续广播。
二、传输层 四层
传输层主要作用:
1、数据分段和重组。
2、连接管理,建立,维护,终止源主机和目标主机之间的连接。(tcp/udp)
3、可靠性保证。
4、流量控制。
**传输层协议:**TCP、UDP
**协议:**规定数据通信和交互的规则和约定。
**协议作用:**通信规范,数据格式,传输方式,消息结构,数据编码规则。
数据交换:数据在网络中的交换方式,数据包的组织方式,传输顺序,错误检测,纠正错误。确保数据的正确传输和完整性。安全保障。
**设备互联:**不同的设备和系统可以互相连接和通信。
网络管理:定义网络的管理以及监控的范畴。
TCP协议:面向连接,可靠的进程到进程通信协议。
TCP提供全双工服务。数据一定是双向传输的。
每个TCP都有发送缓存和接收缓存。用来存储临时数据。
通信双方要传输数据必须建立连接。
UDP协议:无连接,用户数据报协议,不保证可靠性的传输层协议。
UDP协议发送端发送数据不在乎发送的数据是否到达目标主机。数据出错也不管。接收数据的主机也不会告诉源主机是否接收到数据。
TCP和UDP对比
TCP协议安全性高,速度比较慢。
UDP传输速度更快,但是可靠性比较低。
TCP和UDP报文
Flags:标志位 控制位 。TCP建立连接和断开连接,维护连接都靠这些控制位。
URG:紧急位
ACK:确认位,当ACK=1,才表示序列号字段有效,当ACK=0,表示字段是无效的。(重点)
Ack:Ack=10,表示接收方希望发送方下一个字段序列号的编号是10。确认传输是否有问题。(重点)
SYN:同步位,连接位,建立连接时SYN=1必须。(重点)
FIN:断开位,期望断开的地方,要发送一个FIN=1。
PSH:急迫位,PSH=1,表示要把数据尽快发送到应用层。
RST:重置位。RST=1,表示要重新建立TCP连接。
SEQ:tcp报文的序号。(重点)
WIN:接收数据缓冲区的空闲空间。
三次握手过程量(建立连接)
四次挥手过程量(断开连接)
四次挥手之后,双方之间已经不再数据传输,但是连接还未完全中断,进入TIMEWAITE。timewait是有时间范围,超时之后进入closed状态,此状态真正的断开连接了。
TIMEWAITE状态作用:如果后续还有信息,不需要再次建立连接。
timewait时间一般设置为mls的两倍。
MSL(maximum segment lifetime):TCP的数据段能在网络中存货的最大时间。2分钟,之后会被丢弃。
问题:什么是程序?什么是进程
答:程序就是没有运行的代码,运行起来的代码就是进程。
课后作业:
问:为什么是三次握手不是四次握手呢?
答:在进行三次握手之后通信双方已经可以确认对方的发送和接收的能力,以及初始序列号,从而已经确保了数据通信的可靠性和准确性。相比于四次握手并没有实际性的增加额外需要确认的信息或信息的交换,过多的握手过程可能会增加网络延迟和通信开销,降低TCP连接的效率导致资源的浪费。因此,TCP连接建立过程中选择了三次握手而不是四次握手。
问:为什么不是三次挥手而是四次挥手才能断开连接呢?
答:四次挥手确保了连接的可靠关闭。具体来说,第一次和第二次挥手处理了客户端的关闭请求,而第三次和第四次挥手则处理了客户端和服务端的关闭请求。如果在第二次挥手后直接关闭连接,服务端可能还有未发送的数据,这会导致数据丢失。同样,如果在第三次挥手后直接关闭连接,客户端可能无法收到服务端的关闭请求,这会导致连接无法完全关闭。