1、netty系列-计算机网络通信及TCP/IP协议详细知识点

1. 计算机网络的定义和分类

计算机网络是通过通信线路将地理上分散的计算机系统和通信设备连接起来,以实现资源共享和信息传递的系统。根据覆盖范围,计算机网络可以分为以下几类:

  1. 局域网(LAN):作用范围一般为几米到几十公里,通常用于企业、学校或家庭内部的网络。

  2. 城域网(MAN):作用范围介于局域网和广域网之间,通常覆盖一个城市或大都市区。

  3. 广域网(WAN):作用范围一般为几十到几千公里,覆盖范围可以跨越城市、国家甚至大陆。

此外,计算机网络还可以按以下方式分类:

  • 按拓扑结构:如总线型、环型、星型、网状。

  • 按信息的交换方式:如电路交换、报文交换、报文分组交换。

2. 计算机网络发展简史
  1. 诞生阶段:20世纪60年代中期之前,计算机网络以单个计算机为中心的远程联机系统。

  2. ARPANET:1960年代初,美国国防部建立ARPANET,将多个大学的计算机主机通过专门的通信交换机和通信线路连接起来,采用分组交换技术。ARPANET上已经诞生了电子邮件(E-mail)、文件传输协议(FTP)和远程登录(Telnet)。

  3. 开放标准体系结构:OSI模型和TCP/IP模型相继提出。TCP/IP模型由于其实用性和灵活性,最终成为事实上的标准。

  4. 互联网:20世纪90年代至今,互联网(Internet)成为计算机网络的主要形态,广泛应用于各个领域。

3. 计算机网络体系结构
  1. OSI七层模型

    • 物理层:负责传输比特流,定义物理设备标准,如电缆类型、电压标准等。

    • 数据链路层:负责建立逻辑链路、进行硬件地址寻址、错误检测与处理等。

    • 网络层:负责逻辑地址寻址,实现路由选择和转发。

    • 传输层:提供端到端的通信服务,保证数据传输的可靠性。

    • 会话层:负责建立、管理和终止会话。

    • 表示层:处理数据格式转换、加密与解密、数据压缩等。

    • 应用层:为用户提供网络服务,如电子邮件、文件传输等。

  2. 2.

    TCP/IP五层模型

    • 物理层:与OSI模型相同。

    • 数据链路层:与OSI模型相同。

    • 网络层:对应于OSI模型的网络层,主要协议是IP。

    • 传输层:对应于OSI模型的传输层,主要协议是TCP和UDP。

    • 应用层:包括OSI模型的会话层、表示层和应用层,提供各种网络服务。

4. TCP/IP协议族
  1. IP协议(Internet Protocol):负责在网络层传输数据包,包含源地址和目标地址,主要用于确定传输目标。IP协议分为IPv4和IPv6,IPv4地址由32位二进制数组成,通常表示为四个十进制数(如192.168.1.1)。

  2. TCP协议(Transmission Control Protocol):传输层协议,提供可靠的数据传输服务,通过三次握手建立连接,确保数据传输的可靠性。TCP通过序列号和确认机制保证数据不丢失、不重复,采用滑动窗口进行流量控制,并使用慢启动和拥塞避免算法进行拥塞控制。

  3. UDP协议(User Datagram Protocol):传输层协议,提供不可靠的数据传输服务,不进行连接的建立与断开,数据包独立传输,适用于需要快速传输的场景,如视频流和即时通信。

5. 网络传输中的数据

在网络传输中,每个层级的数据包都会附加一个首部,包含该层的必要信息(如发送的目标地址、协议相关信息等)。数据在传输过程中从上层传到下层,每层都会添加自己的首部信息,最终通过物理层传输。在接收端,数据包逐层解封,恢复原始数据。

6. 地址和端口号
  1. MAC地址:媒体访问控制地址,由网络设备制造商写在硬件内部,不随设备移动而变化。MAC地址由48位二进制数组成,通常表示为6个字节的十六进制数(如FF:FF:FF:FF:FF:FF)。

  2. IP地址:互联网协议地址,用于识别网络中的设备,分为IPv4和IPv6。IPv4地址由32位二进制数组成,通常表示为四个十进制数(如192.168.1.1)。

  3. 端口号:用于识别同一台计算机中进行通信的不同应用程序,范围为0-65535,其中0-1023为知名端口号(如HTTP的80端口、FTP的21端口)。端口号可以通过操作系统分配,客户端通常使用高于10000的临时端口号。

7. TCP特性
  1. 可靠传输:TCP提供面向连接的可靠数据传输,通过序列号和确认机制保证数据不丢失、不重复。

  2. 流量控制:通过滑动窗口机制控制发送方的数据发送速度,防止发送方发送过多的数据导致接收方缓冲区溢出。

  3. 拥塞控制:采用慢启动和拥塞避免算法防止网络拥塞,当检测到网络拥塞时,TCP会减小发送速度,避免进一步恶化网络状况。

8. TCP的三次握手

建立一个TCP连接时需要客户端和服务器端总共发送三个包以确认连接的建立,这个过程称为三次握手(Three-way Handshake)。

  1. 第一次握手:客户端发送一个SYN(同步序列编号)包到服务器,表示希望建立连接,并请求服务器分配资源。SYN包中包含一个初始序列号(Sequence Number),假设为J。

    客户端 --> 服务器:SYN=1, seq=J
  2. 第二次握手:服务器收到SYN包后,会以SYN+ACK(同步序列编号和确认编号)包回应客户端,表示同意建立连接,并分配资源。ACK(确认序列编号)字段值为J+1,表示确认收到了客户端的SYN包,同时包含一个服务器自己的初始序列号(假设为K)。

    服务器 --> 客户端:SYN=1, ACK=J+1, seq=K
  3. 第三次握手:客户端收到SYN+ACK包后,回复一个ACK包,确认服务器的SYN包和初始序列号。此时,客户端和服务器端都进入连接建立状态,可以开始传输数据。

    客户端 --> 服务器:ACK=K+1

通过三次握手,客户端和服务器端都确认了对方的存在,并交换了初始序列号,为后续的可靠数据传输奠定了基础。

为什么需要三次握手?

三次握手的设计是为了确保客户端和服务器端都能确认对方的存在,并且双方都能知道对方的接收和发送能力。如果只进行两次握手,服务器在收到客户端的SYN包并回复SYN+ACK包后,并不能确定客户端是否收到了自己的SYN+ACK包,从而无法确保连接的可靠性。

 TCP 是可靠的传输控制协议,而三次握手是保证数据可靠传输又能提高传输效率的最小 次数。为什么?RFC793,也就是 TCP 的协议 RFC 中就谈到了原因,这是因为: 为了实现可靠数据传输, TCP 协议的通信双方,都必须维护一个序列号, 以标识发送 出去的数据包中,哪些是已经被对方收到的。

举例说明:发送方在发送数据包(假设大小为 10 byte)时, 同时送上一个序号( 假设 为 500),那么接收方收到这个数据包以后, 就可以回复一个确认号(510 = 500 + 10) 告 诉发送方 “我已经收到了你的数据包, 你可以发送下一个数据包, 序号从 511 开始” 。

三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号 起始值的必经步骤。 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列 号则得不到确认。 至于为什么不是四次,很明显,三次握手后,通信的双方都已经知道了对方序列号起始 值,也确认了对方知道自己序列号起始值,第四次握手已经毫无必要了。

9. TCP的四次挥手

断开一个TCP连接时需要客户端和服务器端总共发送四个包以确认连接的断开,这个过程称为四次挥手(Four-way Handshake)。

  1. 第一次挥手:主动关闭连接的一方(通常是客户端)发送一个FIN(终止)包,表示不再发送数据,但仍可以接收数据。

    客户端 --> 服务器:FIN=1, seq=U
  2. 第二次挥手:被动关闭连接的一方(通常是服务器)收到FIN包后,回复一个ACK包,表示确认收到了客户端的FIN包,但仍可以继续发送数据。

    服务器 --> 客户端:ACK=U+1
  3. 第三次挥手:服务器发送完所有数据后,也会发送一个FIN包,表示不再发送数据。

    服务器 --> 客户端:FIN=1, seq=V
  4. 第四次挥手:客户端收到服务器的FIN包后,回复一个ACK包,确认收到了服务器的FIN包。此时,客户端进入TIME-WAIT状态,等待足够的时间以确保服务器收到了自己的ACK包,然后才关闭连接。

客户端 --> 服务器:ACK=V+1

通过四次挥手,确保了双方都能正常关闭连接,并且能够处理完所有的剩余数据。

为什么需要四次挥手?

TCP连接是全双工的,即在关闭连接时需要双方都确认对方的数据传输已经完成。第一次和第二次挥手用于关闭一个方向的数据传输,第三次和第四次挥手用于关闭另一个方向的数据传输。通过四次握手,确保了双方都能正常关闭连接,并且能够处理完所有的剩余数据。

为什么需要TIME-WAIT状态?

TIME-WAIT状态的存在是为了确保最后一个ACK包能够被服务器正确接收,如果服务器没有收到ACK包,会重发FIN包。客户端在TIME-WAIT状态下会重发ACK包,直到服务器确认收到了ACK包,连接才会最终关闭。

10. 抓包分析

使用WireShark等抓包工具,可以分析网络传输的数据包,帮助定位网络问题,学习网络协议。通过抓包可以直观地看到TCP三次握手和四次挥手的过程。

  1. 定位网络问题:抓包工具可以帮助分析网络连接问题,如数据包丢失、延迟、错误等。

  2. 学习网络协议:抓包工具可以显示各种协议的数据包,帮助理解协议的工作原理和数据格式。

  3. 实时监控网络:抓包工具可以实时监控网络流量,检测异常行为和安全威胁。

使用WireShark进行TCP三次握手和四次挥手的抓包分析:

  1. 第一次握手:客户端发送SYN包。

  2. 第二次握手:服务器回复SYN+ACK包。

  3. 第三次握手:客户端回复ACK包,连接建立。

  4. 第一次挥手:客户端发送FIN包。

  5. 第二次挥手:服务器回复ACK包。

  6. 第三次挥手:服务器发送FIN包。

  7. 第四次挥手:客户端回复ACK包,连接断开。

11. UDP、UDT和QUIC
  1. UDP(User Datagram Protocol):用户数据报协议,提供不可靠的传输服务,不进行连接的建立与断开,数据包独立传输,适用于需要快速传输的场景,如视频流和即时通信。

  2. UDT(UDP-based Data Transfer Protocol):基于UDP的数据传输协议,支持高速广域网上的海量数据传输,适用于远程访问仪器、分布式数据挖掘和高分辨率的多媒体流。

  3. QUIC(Quick UDP Internet Connections):快速UDP互联网连接协议,由Google开发,结合了TCP和UDP的优点,提供高效可靠的传输服务。QUIC采用多路复用、快速握手、纠错机制和连接保持,适用于高效的互联网数据传输。

通过以上内容,我们可以详细了解计算机网络通信及TCP/IP协议的各个方面,从基本概念到具体协议和应用。希望这些详细的知识点描述能帮助你更好地掌握计算机网络通信及TCP/IP协议。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值