面试必备之——TCP/UDP(一)

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 就分开发

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值