OSI七层模型、TCP/IP四层五层模型
(.森木磊石)(金美)
1、应用层:(七层变为三层)是用户与网络的交互层,负责提供各种应用程序和服务。协议例如HTTP、FTP、TFTP等。
-
应用层:各种应用软件,包括 Web 应用。
-
表示层:负责数据格式转换、数据压缩和加密等
-
会话层:建立、管理和终止会话连接,在不同主机之间建立通信
2、传输层:负责提供端到端的通信服务。协议例如TCP(传输控制协议)、UDP(用户数据报协议)。
3、网络层:负责数据包在网络中的路由和转发、地址信息的初试。核心协议是IP(互联网协议)。
4、网络接口层:(五层变为两层)负责数据的实际传输,包括物理设备(如网卡、路由器等)的规范和功能。
-
数据链路层:负责定义数据的基本格式,如何传输,如何标识,如网卡MAC地址
-
物理层:负责底层数据传输,如网线
五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是TCP/IP四层体系结构。而七层模型(OSI模型)则提供了一种更为细致的分层结构,用于理解和设计各个层次的功能和协议。
ping命令属于哪一层
ping命令基于网络层的命令,是基于ICMP协议工作的。
UART与RS485属于那一层
USRT不属于哪一个固定的层,它是串行通信中物理层和数据链路层之间的桥梁
RS485定义了电气特性和接线标准,在OSI模型中属于物理层。
TCP头部有哪些信息
1、源端口号(16bit):
2、目标端口号(16bit):
1、序号(32bit):传输方向上字节流的字节编号
2、确认号(32bit):接收方对发送方TCP报文段的响应,其值是收到的序号值 + 1
3、首部长(4bit):标识首部有多少个4字节 ,最大为15,即60字节。
4、标志位(6bit):SYN(连接报文段)、ACK(确认报文段)、FIN(断开报文段)等
5、窗口(16bit):接收窗口,用于告知发送方本方的缓冲还能接收多少字节数据
6、校验和(16bit):接收端用CRC检验整个报文段有无损坏
三次握手和四次挥手
(联想)
三次捂手
1、客户端向服务器发送一个SYN包,表示希望建立连接,进入SYN_SENT状态等待服务器确认
2、服务器收到SYN包后,向客户端发送确认包ACK(SYN+1)确认客户端的SYN,同时服务器也发送一个SYN包
3、客户端收到SYN+ACK包后,向服务器发送确认包ACK(SYN+1)确认服务器的SYN。此包发送完毕,双方进入ESTABLISHED状态,完成三次握手。
四次挥手
1、客户端向服务器发送一个FIN包,用来停止向服务器发送数据,但仍然可以接收服务器数据,进入FIN_WAIT_1状态。
2、服务器收到FIN包后,向客户端发送确认包ACK(FIN+1),进入CLOSE_WAIT状态
3、服务器向客户端发送FIN包,用来停止接收数据,进入LAST_ACK状态
4、客户端收到FIN包后,向服务器发送ACK(FIN+1)包,然后进入TIME_WAIT状态,等待一段时间后进入CLOSED状态
TCP状态
-
CLOSED:初始状态。
三次握手
-
SYN_SENT:客户端执行connect()函数,发送SYN包,进入此状态。
-
LISTEN:服务器执行listen()函数,处于监听状态。
-
SYN_RCVD:服务端收到SYN包并发送服务端SYN包,进入此状态。
-
ESTABLISHED:表示连接建立。客户端发送了最后一个ACK包后进入此状态,服务端接收到ACK包后进入此状态。
四次挥手
-
FIN_WAIT_1:终止连接的一方(通常是客户端)执行close()函数,发送了FIN报文后进入,等待对方FIN。
-
CLOSE_WAIT:接收到客户端FIN包之后等待关闭的阶段。在接收到对方的FIN包之后,自然是需要立即回复ACK包的,表示已经知道断开请求。但是服务器是否立即断开连接(发送FIN包)取决于是否还有数据需要发送给客户端,若有,则在发送FIN包之前均为此状态。
-
FIN_WAIT_2:此时是半连接状态,即客户端要求关闭连接,等待服务器关闭。客户端接收到服务器的ACK包,但并没有立即接收到服务端的FIN包,进入FIN_WAIT_2状态。
-
LAST_ACK:服务端执行close()函数,发送最后的FIN包,等待最后的客户端ACK响应,进入此状态。
-
TIME_WAIT:客户端收到服务端的FIN包,并立即发出ACK包做最后的确认,在此之后的2MSL时间称为TIME_WAIT状态。
四次挥手中 TIME_WAIT 状态是在哪一端
1、TCP四次挥手中的TIME_WAIT状态主要存在于主动关闭方(客户端),也就是发送第一个FIN请求的那一方,确保TCP全双工连接正确终止,即使在网络状况不佳或连接意外终止的情况下,也能维护TCP连接的稳定和可靠性。
2、保证客户端发送的最后一个 ACK 报文能够到达服务器,因为这个报文可能丢失,站在服务器的角度看来,我已经发送了 FIN+ACK 报文请求断开,客户端没有给我回应,应该是我的请求报文没有收到,于是服务器就会重新发送一次,客户端就能够在这个 2MSL 时间内收到这个重传的报文,接着回应报文。
三次握手中每次握手信息对方没有收到会怎样
如果第一次握手消息丢失,那么请求方不会得到 ack 消息,超时后进行重传
如果第二次握手消息丢失,那么请求方不会得到 ack 消息,超时后进行重传
如果第三次握手消息丢失,那么 Server 端该 TCP 连接的状态为 SYN_RECV,并且会根据 TCP 的超时重传机制,会等待 3 秒、6 秒、12 秒后重新发送 SYN+ACK 包,以便 Client 重新发送 ACK 包,如果重发指定次数之后,仍然未收到 client 的 ACK应答,那么一段时间后,Server 自动关闭这个连接
两次握手可以吗
TCP 协议双方都必须维护一个序列号,三次握手的过程及时通信双方互相告知序列号起始值,并确认对方已经收到了序列号如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则是得不到确认,服务器这边无法判断客户端是否能接收
三次挥手可以吗
(金美)
假设是客户端主动断开,在第一次挥手中客户端发起请求断开,接着服务器回了个应答(第二次),表示我已经收到请求等一段时间,等服务器的数据发送完成之后再向客户端发起断开(第三次)客户端接受到之后发起应答(第四次)如果是三次挥手那么只能是第二和第三次合并,即收到第一次挥手之后,发起应答和断开请求,但是这样会存在服务器有些数据还没发送完成就发起断不开
一句话:服务器回应你的请求断开,服务器可能还有数据没发送,所以应答和 FIN 就分开发