当前位置: 首页> 游戏> 评测 > 网络通信里的四个问题归纳

网络通信里的四个问题归纳

时间:2025/7/12 6:35:10来源:https://blog.csdn.net/qq_48922607/article/details/141874272 浏览次数:0次

网络通信里的四个问题归纳:TCP连接与断开的过程、TCP编程实操、TCP怎么解决网络通信中的丢包问题、TCP/IP四层模型
图片引自网络

TCP连接与断开的过程

对于TCP的连接的三次握手和四次挥手,只需要记住下面两张图

三次握手

image-20240903214532052

在上图中,主要出现的保证可靠性的措施是:序列号、确认应答

四次挥手

image-20240903214618606

TCP编程

使用TCP建立服务端、客户端的流程如下:

img

TCP是面向连接的,而UDP是无连接的,因此对于UDP:

  • 在服务端,无listen、accept

  • 在客户端,无connect

对应的recvsend分别改为:recvfromsendto

为简单起见,这里以python版本展示使用流程

服务端举例(python)

import socketsocket_server = socket.socket()
socket_server.bind(("localhost", 8888))
socket_server.listen(1)conn, address = socket_server.accept() # 阻塞式,等待客户端的连接while True:data: str = conn.recv(1024).decode("UTF-8") # 阻塞式print(f"客户端发来的消息是:{data}")msg = input("请输入你要回复客户端的消息:")if msg == 'exit':breakconn.send(msg.encode("UTF-8"))  # encode将字符串编码为字节数组对象conn.close()
socket_server.close()

客户端举例(python)

import socketsocket_client = socket.socket()
socket_client.connect(("localhost", 8888))while True:send_msg = input("请输入要发送给服务端的消息:")if send_msg == "exit":breaksocket_client.send(send_msg.encode("UTF-8"))recv_data = socket_client.recv(1024).decode("UTF-8")    print(f"服务端回复的消息是:{recv_data}")socket_client.close()

注意到,服务端的数据收发使用的是conn,而不是socket对象socket_server

这样可以使得一个服务器可以和多个客户端分别建立点到点的连接

TCP怎么解决网络通信中的丢包问题

使用重传机制拥塞控制解决,具体描述如下:

这个问题属于可靠性传输的一部分,而TCP使用序列号、确认应答、重传机制、滑动窗口、流量控制、拥塞控制实现可靠性传输,分别叙述如下:

  • 序列号、确认应答

    实现可靠传输的方式之一

  • 重传机制

    针对数据包丢失的情况使用

    超时重传、快速重传、SACK、D-SACK四种

  • 滑动窗口

    提高通信效率的方式

    发送方无需等待确认应答,可以继续发送数据的最大值

  • 流量控制

    考虑接收方处理能力,防止因对方处理不过来,触发重发机制导致的网络流量无端浪费的情况

    接收窗口过小时阻止对方发数据过来,

    小数据的传输会使网络总体的利用率低

  • 拥塞控制

    网络出现拥塞时,继续发送大量数据包会导致数据包时延、丢失等,然后TCP重传会导致网络负担更重,并恶性循环

    拥塞控制能避免发送方数据填满整个网络

    拥塞控制算法:慢启动(一点一点提高发送数据包的数量(指数增长))、拥塞避免(线性增长)、拥塞发生、快速恢复

    对于拥塞发生,有以下两种情况:

    • 对超时重传,使用慢启动

      拥塞发送 —— 超时重传
    • 对快速重传,使用快速恢复

    image-20240531184702216

TCP/IP四层模型

img

image-20240531212614875

TCP/IP四层模型各层作用:

  • 应用层

    用户与应用程序交互

  • 传输层

    提供端到端(应用程序到应用程序)的数据传输服务,保证数据可靠传输(TCP协议)

  • 网络层

    主机到主机之间的通信,确保数据能到达目标网络

  • 链路层

    提供MAC地址,处理数据在物理媒介中的实际传输

    MAC地址,用于在局域网内标识设备,在网络中唯一标示一个网卡

关键字:网络通信里的四个问题归纳

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: