网络编程概念

网络编程

  • 网络编程涉及在计算机网络上进行数据交换和通信的一系列技术和方法。

【一】CS架构和BS架构

【1】CS架构(Client-Server)

  • "CS架构" 通常指的是"Client-Server Architecture",即客户端-服务器架构。这是一种常见的网络体系结构,其中系统被划分为两个主要组成部分:客户端和服务器。

  • 客户端(Client):

    • 客户端是系统的用户界面,通常是一个应用程序或浏览器,通过网络发送请求到服务器,并接收服务器的响应。客户端负责呈现信息、收集用户输入,并将请求发送给服务器。
  • 服务器(Server):

    • 服务器是系统的中央组件,负责处理客户端发送的请求,执行相应的处理逻辑,并将结果返回给客户端。服务器通常存储和管理数据,提供服务或资源,以响应客户端的请求。
  • 特点和优势:

    1. 分布式性: CS架构支持分布式计算,允许客户端和服务器在不同的物理位置上运行。
    2. 可维护性: 由于逻辑上的分离,可以更容易维护和升级客户端和服务器的各自部分。
    3. 灵活性: 客户端和服务器可以独立开发和演化,只要它们之间的接口保持一致。
    4. 安全性: 通过在服务器上控制访问和处理敏感信息,可以提高系统的安全性。
    5. 可伸缩性: 具有良好的可伸缩性,可以通过增加服务器来处理更多的请求。

【2】BS架构(Browser-Server)

  • "BS架构" 指的是"Browser-Server Architecture",即浏览器-服务器架构。在BS架构中,系统被划分为两个主要组成部分:浏览器(Client)和服务器(Server)。

  • 浏览器(Client):

    • 浏览器是用户界面的一部分,负责呈现网页并解释用户与网页交互的请求。浏览器通常执行在用户的设备上,如个人计算机、平板电脑或智能手机。
  • 服务器(Server):

    • 服务器是中央组件,存储和管理数据,处理来自浏览器的请求,并返回相应的内容。服务器执行应用程序的逻辑,处理数据库访问、业务逻辑和其他服务器端任务。
  • 特点和优势:

    1. 跨平台: 由于浏览器是跨平台的,用户可以使用不同类型的设备(PC、平板、手机)来访问应用程序。
    2. 更新便捷: 应用程序的更新和维护可以在服务器上完成,而不需要用户手动更新客户端。
    3. 轻量级客户端: 浏览器作为客户端通常是轻量级的,用户只需一个浏览器即可访问多种应用。
    4. 无需安装: 用户无需在本地安装应用程序,只需打开浏览器就可以使用应用。
    5. 简化部署: 由于应用逻辑在服务器上执行,部署和维护更为简单。

【二】网络编程

【1】网络编程的发展史

  1. 早期阶段 (1960s-1980s):
    • ARPANET的诞生: 1969年,美国国防部的ARPANET项目开始运作,这是互联网的前身。初期的网络通信主要是基于低级的传输协议(如NCP)。
  2. TCP/IP协议的出现 (1970s-1980s):
    • TCP/IP的发展: 在1970s和1980s,TCP/IP协议成为主流。TCP/IP提供了一个可靠的、分层次的协议栈,包括传输层的TCP和网络层的IP。这奠定了现代互联网的基础。
  3. 客户端-服务器模型 (1980s-1990s):
    • 发展阶段: 随着TCP/IP协议的推广,客户端-服务器模型成为一种常见的网络架构。这一时期见证了数据库系统、邮件服务等应用的兴起。
  4. World Wide Web (1990s):
    • Web的兴起: 1990s是互联网发展的关键时期,World Wide Web(WWW)的出现使得信息能够通过超文本传输协议(HTTP)在浏览器和服务器之间传递。这导致了Web应用程序的兴起。
  5. 云计算和分布式系统 (2000s-现在):
    • 云计算: 2000s见证了云计算的兴起,使得开发者能够更轻松地部署和扩展应用程序。分布式系统和微服务架构变得更为流行。
  6. 移动互联网和IoT (2010s-现在):
    • 移动互联网: 随着智能手机的普及,移动应用的开发和网络通信变得更为重要。移动互联网的发展推动了移动应用和服务的繁荣。

    • 物联网(IoT): IoT的兴起使得网络编程涉及到更广泛的设备和传感器。这种多样性和复杂性对网络编程提出了新的挑战。

  7. 现代网络编程 (现在):
    • 新兴技术: 当前,网络编程涉及到众多新兴技术,如容器化、微服务、Serverless计算等。同时,安全性、性能优化和大规模并发处理变得更为重要。

【三】网络协议

【1】网络(network)与互联网(internet)

  1. 网络(Network): "网络"是一个更通用的术语,指的是连接在一起的多个计算机、设备或系统,使它们能够相互通信和共享资源。网络可以是小范围的,比如局域网(LAN),也可以是全球范围的,比如互联网。网络的目的是在不同设备之间传递信息。
  2. 互联网(Internet): "互联网"是一种全球范围的、公共的计算机网络。它是由连接在一起的成千上万的网络组成的,通过使用标准化的通信协议,如TCP/IP,使得全球范围内的计算机能够互相通信。互联网是一种特殊的、更大规模的网络,它成为全球信息和资源交换的平台。
  • 网络的组成:物理链接设备(路由器、交换器、网线等) + 互联网通信协议(计算机界的”英语“)

【2】网络协议与互联网协议的区别

  1. 互联网协议(Internet Protocol):
    • "互联网协议"通常指的是TCP/IP协议套件,是一组定义了互联网上计算机进行通信的协议。
    • 主要包括IP(Internet Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等协议。
    • 这是一种更具体、更狭义的术语,通常指涉及到全球互联网的协议。
  2. 网络协议(Network Protocol):
    • "网络协议"是一个更通用的术语,指的是计算机网络中用于通信的协议,可以包括互联网协议在内,也可以包括其他局域网(LAN)或广域网(WAN)上使用的协议。
    • 这是一个广义的概念,可以用来描述各种不同类型的网络和通信协议。

【3】互联网协议

​ 互联网协议是一组规定网络通信标准的协议,它们定义了在计算机网络上进行数据交换的方式。其中最重要的协议是TCP/IP协议套件,它是互联网上广泛使用的协议集合。以下是TCP/IP协议套件的主要协议:

  1. IP协议(Internet Protocol):
    • 定义了计算机在互联网上的地址。
    • 负责数据包的路由和寻址。
    • 分为IPv4和IPv6两个版本,其中IPv6是IPv4的下一代协议,用于解决IPv4地址空间不足的问题。
  2. TCP协议(Transmission Control Protocol):
    • 提供可靠的、面向连接的通信。
    • 负责将数据分割成小的数据包,确保它们的正确顺序传输,且没有丢失。
    • 适用于需要可靠传输的应用,如文件传输、电子邮件等。
  3. UDP协议(User Datagram Protocol):
    • 提供无连接的通信。
    • 不保证数据包的可靠传输,不进行连接建立和维护,适用于实时性要求较高的应用,如语音通话、视频流等。
  4. ICMP协议(Internet Control Message Protocol):
    • 用于在IP网络上传递错误消息和操作信息。
    • 主要用于网络诊断和错误通知。
  5. ARP协议(Address Resolution Protocol):
    • 用于将网络层的IP地址解析为数据链路层的物理地址(MAC地址)。
    • 在局域网中实现主机的地址解析。
  6. DNS协议(Domain Name System):
    • 用于将域名转换为对应的IP地址。
    • 提供域名和IP地址之间的映射,方便人们记忆和使用域名。

​ 这些协议构成了互联网通信的基础,使得不同设备、操作系统和应用能够在全球范围内进行通信。除了TCP/IP协议套件外,还有其他一些协议和标准,如HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等,它们在特定的应用场景中发挥重要作用。

【4】网络协议

计算机网络中协议的层次结构通常按照分层模型进行组织,以便实现模块化、可维护和可扩展的网络架构。两个常见的分层模型是OSI(Open Systems Interconnection)七层模型和TCP/IP五层模型。这些模型将协议划分为不同的层次,每个层次负责特定的功能。

  • OSI七层模型:
    1. 物理层(Physical Layer):
      • 提供物理介质上的比特传输。
    2. 数据链路层(Data Link Layer):
      • 负责帧的传输、差错检测和纠正。
    3. 网络层(Network Layer):
      • 提供路由和转发功能,实现不同网络之间的通信。
    4. 传输层(Transport Layer):
      • 提供端到端的通信,负责数据分段、流控制和差错恢复。
    5. 会话层(Session Layer):
      • 管理会话,包括对话的建立、维护和终止。
    6. 表示层(Presentation Layer):
      • 处理数据的格式、编码和加密,提供数据格式的透明性。
    7. 应用层(Application Layer):
      • 提供用户接口、网络服务和应用程序。
  • TCP/IP五层模型:
    1. 物理层(Physical Layer):
      • 提供物理介质上的比特传输。
    2. 数据链路层(Data Link Layer):
      • 提供帧的传输和物理地址解析。
    3. 网络层(Network Layer):
      • 提供路由和数据包的转发。
    4. 传输层(Transport Layer):
      • 提供端到端的通信,包括TCP和UDP协议。
    5. 应用层(Application Layer):
      • 提供用户接口、网络服务和应用程序。
  • 在实际应用中,表示层和会话层的功能通常包含在应用层中。这两个模型都强调了分层的设计思想,使得不同层次的协议可以独立开发、测试和维护,从而实现更好的可扩展性和互操作性。 TCP/IP模型是实际应用更广泛的模型,而OSI模型则提供了更为抽象和详细的层次结构。

【4.1】OSI七层模型

​ OSI(Open Systems Interconnection)七层模型是一种用于网络协议设计的框架,将网络通信划分为七个抽象层。每一层执行特定的功能,并与相邻层进行通信。这种分层设计有助于实现模块化和标准化,使不同厂商的设备和协议能够互操作。

  1. 物理层(Physical Layer):
    • 主要关注硬件传输和电信设备。
    • 定义物理介质、电流电压等传输细节。
    • 传输的单位是比特。
  2. 数据链路层(Data Link Layer):
    • 提供可靠的点对点通信。
    • 将物理层提供的比特组织成帧(Frame)。
    • 提供差错检测和纠正功能。
    • 通常分为两个子层:逻辑链路控制(LLC)和介质访问控制(MAC)。
  3. 网络层(Network Layer):
    • 提供网络间的路径选择和数据包转发。
    • 实现逻辑寻址,将数据包从源主机传输到目标主机。
    • 使用路由器进行数据包的转发。
  4. 传输层(Transport Layer):
    • 提供端到端的通信。
    • 负责流控制、差错检测与重传、数据分段与重组。
    • 常见的传输层协议有TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。
  5. 会话层(Session Layer):
    • 管理会话和数据交换。
    • 提供对话控制,允许建立、管理和终止通信会话。
    • 处理同步、对话复位等问题。
  6. 表示层(Presentation Layer):
    • 处理数据的格式、编码和加密。
    • 提供数据的翻译、压缩和加密功能。
    • 为应用层提供数据格式的透明性。
  7. 应用层(Application Layer):
    • 提供用户接口、网络服务和应用程序。
    • 包含各种应用,如电子邮件、文件传输、远程登录等。
    • 用户直接与应用层交互。

img

img

img

【4.2】TCP/IP五层模型

​ TCP/IP五层模型是计算机网络中的一种分层模型,由互联网工程任务组(IETF)制定,用于描述互联网协议的体系结构。该模型包括以下五个层次,从底层到高层:

  1. 物理层(Physical Layer):
    • 位于最底层,主要关注物理介质和硬件设备,如电缆、光纤、网卡等。
    • 负责比特的传输,以及将数据转换为电信号。
  2. 数据链路层(Data Link Layer):
    • 主要负责帧的传输和物理地址的解析(通常是MAC地址)。
    • 提供了对物理层的封装和错误检测。
  3. 网络层(Network Layer):
    • 负责数据包的路由、转发和寻址。
    • 包括IP协议,用于定义计算机在互联网上的地址。
  4. 传输层(Transport Layer):
    • 提供端到端的通信,主要包括TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。
    • TCP提供可靠的、面向连接的通信,而UDP提供无连接的通信。
  5. 应用层(Application Layer):
    • 位于最顶层,包含了用户接口、网络服务和应用程序。
    • 各种应用层协议,如HTTP、FTP、SMTP等,都属于这个层次。

​ 在TCP/IP五层模型中,表示层和会话层的功能通常包含在应用层中。这个模型简化了OSI七层模型,更符合实际互联网的使用。不同层次之间通过定义明确的接口来进行通信,从而使得不同厂商的设备和不同类型的网络可以协同工作。

【4.3】OSI七层模型、TCP/IP模型、TCP/IP五层模型的区别

img

img

img

img

【四】五层模型详细

【1】物理层(Physical Layer)

  • 主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0,也就是01二进制
  1. 功能:
    • 物理层主要负责处理物理介质和硬件设备之间的传输问题。
    • 提供比特的传输,将数据转换为电信号或光信号等物理形式,以便在网络中传输。
  2. 特点和任务:
    • 关注传输媒体的特性,如电缆、光纤、无线信道等。
    • 定义了电流、电压、时序等物理参数的规范。
    • 处理物理连接、插座、接口等硬件细节。
  3. 协议和设备:
    • 没有具体的协议,而是定义了传输媒体和连接的标准。
    • 典型的设备包括集线器、中继器、光纤调制解调器等。
  • 物理层单纯的发送电频是没有任何的意义的,因为不知道发送的电频什么意思,所以,需要对发送的电频进行分组
  • 数据链路层就是专门用来对物理层发送过来的数据进行分组的,该层使用的以太网协议ethernet
  1. 功能:
    • 数据链路层负责提供可靠的点对点通信。
    • 在网络中传输帧,进行帧的传输和接收,提供差错检测和纠正功能。
  2. 特点和任务:
    • 将数据分割成帧,并在帧头中包含控制信息和地址信息。
    • 提供流量控制和错误检测,确保数据的可靠传输。
    • 实现对物理层的封装,将数据包装成帧以进行传输。
  3. 协议和设备:
    • 典型的数据链路层协议包括PPP(Point-to-Point Protocol)、HDLC(High-Level Data Link Control)等。
    • 数据链路层设备包括网卡、交换机、网桥等。

【2.1】以太网协议

接口协议(四):以太网(Ethernet)学习(一):协议_以太网 标准寄存器-CSDN博客

【2.1.1】以太网协议的主要特点和组成部分:
  1. 帧的结构:
    • 以太网帧包含了多个字段,包括目标MAC地址、源MAC地址、类型字段、数据字段和FCS(帧校验序列)字段。
    • 目标MAC地址和源MAC地址分别指定了帧的目标和发送者。
  2. MAC地址:
    • 以太网使用48位的MAC地址来唯一标识网络中的设备。
    • MAC地址是数据链路层中设备的物理地址,由设备的制造商分配。
  3. 帧的传输和接收:
    • 以太网帧在物理媒体上传输,通过电缆、光纤等传输到目标设备。
    • 接收设备根据帧头中的目标MAC地址来判断是否接收该帧。
  4. 冲突检测:
    • 以太网使用CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议来处理多设备共享同一网络媒体时可能发生的冲突。
  5. 物理层标准:
    • 以太网可以在不同的物理媒体上运行,包括以太网(Ethernet)、无线局域网(Wi-Fi)等。
    • 以太网的物理层标准定义了传输介质和电信号的特性。
  6. 速率:
    • 以太网支持不同的传输速率,包括10 Mbps、100 Mbps、1 Gbps、10 Gbps等。
【2.1.2】数据帧
  • 一组电信号构成一个数据包,叫做‘帧’
  • 每一数据帧分成:报头head和数据data两部分
  • 在以太网中,MAC地址是数据链路层帧头中的目标地址和源地址字段。
head data
固定18个字节 最短46字节,最长1500字节
  • head包含:(固定18个字节)

    • 发送者/源地址,6个字节

    • 接收者/目标地址,6个字节

    • 数据类型,6个字节

  • data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容
  • head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

在这里插入图片描述

【2.1.3】mac地址
  • 以太网协议规定,每一个接入互联网的设备都必须要有一个网卡,发送端和接收端的地址便是指网卡的地址,即Mac地址

  • MAC地址(Media Access Control Address),又称物理地址、硬件地址,是一个用于标识网络设备的唯一地址。每个网络设备(如网络适配器、网卡)都有一个唯一的MAC地址,它由48位二进制数组成,通常以十六进制表示,分为6个字节。

  • MAC地址的格式通常是6个十六进制数,用冒号(:)或连字符(-)分隔,例如:01:23:45:67:89:ab01-23-45-67-89-ab

  • MAC地址的前三个是由IEEE分配给硬件制造商的唯一标识符(OUI,Organizationally Unique Identifier),用于表示制造商。后三个是由制造商分配的设备唯一标识。

【2.1.4】ARP协议
  • 用来将ip地址识别成mac地址的协议
  • IP 地址通过地址解析协议(ARP,Address Resolution Protocol)与物理节点的 MAC 地址相关联,ARP 用节点对应的 IP 地址解析 MAC 地址。
  • ARP 通常被认为是第二层的一部分,但是由于 IP 地址在第三层以下都不存在,所以 ARP 也是第三层的一部分。

【3】网络层

  • 网络层位于数据链路层和传输层之间。它主要负责在网络中实现端到端的数据传输和路由功能。网络层的主要任务包括:
    1. 路由和转发: 网络层负责选择最佳路径将数据包从源主机传输到目标主机。这涉及到路由器的使用,路由器根据网络层的信息来决定数据包的下一跳。
    2. 寻址: 网络层使用逻辑地址(通常是IP地址)来标识网络上的设备。逻辑地址在整个网络中唯一标识一个设备,使得数据包能够被正确路由到目标。
    3. 分段和重组: 网络层将传输层提供的数据分割成适当的数据包(通常称为数据报)以便在网络上传输。在接收端,网络层将这些数据包重新组装成完整的数据。
    4. 错误检测和纠正: 网络层负责在传输过程中检测和纠正数据包的错误。通常使用各种协议和算法来确保数据的完整性和可靠性。
    5. 流量控制和拥塞控制: 网络层可以通过一些机制来控制流量,确保网络不会因为过多的数据而拥塞。
  • 最常见的网络层协议是IP(Internet Protocol),它是互联网上使用的主要协议。IPv4和IPv6是两个主要版本的IP协议,它们定义了在互联网上进行通信的标准。
  • 在网络层以上,上层协议(如TCP和UDP)负责端到端的通信,而在网络层以下,数据链路层提供了物理地址的解析和物理介质上的数据传输。网络层在整个网络体系结构中起着连接上下层的桥梁作用。

【3.1】IP协议

【3.1.1】IP协议的主要特点和功能:
  1. IP地址:
    • IP地址是一个32位(IPv4)或128位(IPv6)的二进制数,用于唯一标识网络中的设备。
    • IPv4地址通常以点分十进制表示,如192.168.0.1,而IPv6地址则以冒号分隔,如2001:0db8:85a3:0000:0000:8a2e:0370:7334
  2. 路由和转发:
    • IP协议负责路由数据包,即将数据包从源主机传输到目标主机的过程。
    • 路由器是负责实现路由功能的设备,根据IP地址和路由表来确定数据包的下一跳。
  3. 分片和重组:
    • 当数据包传输过程中经过不同的网络时,可能需要对数据包进行分片。
    • 接收端负责将分片的数据包重组成完整的数据。
  4. 差错检测:
    • IP协议包含一定的错误检测机制,但不提供差错恢复功能。较为严重的错误通常由更上层的协议处理,如传输层的TCP协议。
  5. 版本和协议:
    • IPv4和IPv6是两个主要版本的IP协议。IPv6被引入以解决IPv4地址空间有限的问题。
    • IP协议本身并不提供可靠的、面向连接的通信,而是由上层协议(如TCP)负责提供这些特性。
  6. 服务质量(QoS):
    • IP协议支持一定程度的服务质量标记,以便在网络中为不同类型的数据包分配适当的优先级。
【3.1.2】IPv4

IPv4地址的组成部分如下:

  1. IPv4地址:
    • 由32位二进制数组成,通常以点分十进制的形式表示。
    • 每个八位组被称为一个“字节”,由四个字节组成。
  2. 子网掩码(Subnet Mask):
    • 用于将IPv4地址划分为网络部分和主机部分。
    • 子网掩码中的“1”位表示网络部分,而“0”位表示主机部分。
    • 例如,255.255.255.0表示前24位用于网络,剩余的8位用于主机。
  3. 默认网关(Default Gateway):
    • 用于将数据包从一个子网传输到另一个子网。
    • 默认网关通常是本地网络上路由器的IP地址。
  4. DNS服务器地址(Domain Name System):
    • 用于将域名解析为IP地址。
    • 计算机在进行网络通信时,可以使用DNS服务器将域名转换为相应的IPv4地址。
  5. DHCP服务器地址(Dynamic Host Configuration Protocol):
    • 用于动态分配IP地址给网络中的设备。
    • DHCP服务器负责向设备提供IP地址、子网掩码、默认网关等网络配置信息。
  • 子网掩码
    • 所谓”子网掩码”,就是表示子网络特征的一个参数。
    • 它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。
      • 比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位
      • 那么子网络掩码就是11111111.11111111.11111111.00000000
      • 写成十进制就是255.255.255.0。
    • 知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。
      • 方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同
【3.1.3】回环地址
  • 回环地址是计算机网络中的一种特殊地址,通常用于测试和本地通信。它允许一个设备向自己发送数据,而无需通过网络传输。在IPv4和IPv6中,都有相应的回环地址。
  • IPv4 :127.0.0.1
  • IPv6:::1

【4】传输层

​ 传输层是计算机网络体系结构中的一层,位于网络层和应用层之间。传输层的主要任务是提供端到端的通信服务,确保数据在源主机和目标主机之间的可靠、有序和高效传输。

传输层的主要功能和特点包括:

  1. 端到端通信:
    • 传输层负责在源主机和目标主机之间建立端到端的通信连接。
  2. 多路复用与多路分解:
    • 传输层通过端口号实现多路复用,将不同的应用程序的数据区分开。
    • 接收端使用端口号进行多路分解,将数据传递给正确的应用程序。
  3. 错误检测与纠正:
    • 传输层负责检测和纠正由于网络传输引起的数据错误。
    • 在有需要的情况下,传输层协议可以提供可靠的数据传输。
  4. 流量控制:
    • 传输层通过流量控制机制确保源主机发送的数据不会超过目标主机的处理能力。
  5. 拥塞控制:
    • 传输层负责通过拥塞控制机制避免网络中的拥塞,以确保网络的高效运行。
  6. 面向连接和无连接服务:
    • 传输层提供两种不同类型的服务:面向连接的服务(如TCP)和无连接的服务(如UDP)。
    • 面向连接的服务提供可靠的、面向连接的通信,而无连接的服务则提供更轻量级的通信,适用于实时性要求较高的应用。
  7. 传输层协议:
    • 两个主要的传输层协议是TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。
    • TCP提供可靠、面向连接的通信,而UDP提供无连接的通信,适用于实时通信和较简单的应用场景。

总体而言,传输层在网络中起着连接上下层的桥梁作用,为应用层提供了各种通信服务,同时通过控制机制确保网络的可靠性和高效性。

【4.1】TCP协议

​ TCP(Transmission Control Protocol)是互联网协议套件中的一部分,属于传输层协议。TCP提供面向连接、可靠的、基于字节流的通信服务,确保数据在源和目标之间的可靠传输。以下是TCP协议的主要特点和功能:

  1. 面向连接:
    • TCP是一种面向连接的协议,通信双方在通信之前需要建立连接。
    • 连接的建立使用“三次握手”过程,确保双方都同意建立连接。
  2. 可靠性:
    • TCP通过使用序号、确认和超时重传机制来确保数据的可靠传输。
    • 每个TCP数据包都有一个序号,接收方会发送确认(ACK)以表示已成功接收。
  3. 流控制:
    • TCP使用滑动窗口机制进行流量控制,防止发送方发送过多的数据导致接收方无法处理。
    • 通过动态调整窗口大小,TCP保持发送和接收之间的平衡。
  4. 拥塞控制:
    • TCP具有拥塞控制机制,可以根据网络的拥塞程度调整发送速率,防止网络拥塞。
    • TCP发送方会根据接收到的确认和超时情况来调整发送速率。
  5. 面向字节流:
    • TCP是面向字节流的协议,将数据看作字节的流而不是固定大小的消息。
    • 应用层发送的数据可能会被TCP拆分成多个TCP段进行传输。
  6. 全双工通信:
    • TCP连接是全双工的,允许双方在同一时间进行双向通信。
    • 数据可以同时在两个方向上传输,使得通信更加灵活。
  7. 连接的释放:
    • TCP连接的释放使用“四次挥手”过程,确保双方都同意断开连接。
  8. 端口:
    • TCP使用端口来标识不同的应用程序,源端口和目标端口共同标识一个TCP连接。

​ TCP协议通常用于可靠性要求较高的应用,如文件传输、电子邮件传输、Web浏览等。它提供了一种可靠的、面向连接的通信方式,适用于需要确保数据完整性和可靠性的场景。

【4.1.1】三次握手和四次挥手
三次握手(Three-Way Handshake):
  1. 第一步(SYN):
    • 客户端向服务器发送一个带有SYN(同步)标志的TCP报文,表示客户端请求建立连接。
    • 客户端选择一个随机的初始序列号(ISN)。
  2. 第二步(SYN + ACK):
    • 服务器收到客户端的SYN请求后,会回复一个带有SYN和ACK(确认)标志的TCP报文,表示服务器已收到请求,并同意建立连接。
    • 服务器也会选择一个随机的初始序列号。
  3. 第三步(ACK):
    • 客户端收到服务器的响应后,向服务器发送一个带有ACK标志的TCP报文,表示客户端确认连接建立。
    • 此时,TCP连接已建立,双方可以开始进行数据传输。

img

四次挥手(Four-Way Handshake):
  1. 第一步(FIN):
    • 一方(通常是客户端)决定关闭连接,向对方发送一个带有FIN(结束)标志的TCP报文。
    • 表示该方不再发送数据,但仍愿意接收数据。
  2. 第二步(ACK):
    • 接收到FIN的一方(通常是服务器)发送一个带有ACK标志的TCP报文,表示收到了关闭请求。
    • 此时,该方仍可以发送数据。
  3. 第三步(FIN):
    • 接收到ACK的一方也决定关闭连接,向对方发送一个带有FIN标志的TCP报文。
    • 表示该方不再发送数据,但仍愿意接收数据。
  4. 第四步(ACK):
    • 对方收到FIN后,回复一个带有ACK标志的TCP报文,表示确认收到关闭请求。
    • 此时,TCP连接彻底关闭,不再传送数据。

在这里插入图片描述

image-20240118152139889

【4.1.2】TCP数据包

img

image-20240118152726633

  • 一篇看懂【TCP协议】---TCP协议详解(值得收藏) - 知乎 (zhihu.com)

  • 下面分别对其中的字段进行介绍:

  • 源端口和目的端口
    • 各占2个字节,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。有时一个IP地址和一个端口号也称为socket(插口)。
  • 序号(seq)
    • 占4个字节,是本报文段所发送的数据项目组第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而且数据共100字节,
    • 则下一个报文段的序号就是400;序号是32bit的无符号数,序号到达2^32-1后从0开始。
  • 确认序号(ack)
    • 占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;确认序号应该是上次已成功收到数据字节序号+1。
    • 只有ACK标志为1时,确认序号才有效。
  • 数据偏移
    • 占4比特,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。数据偏移以32位为长度单位,
    • 也就是4个字节,因此TCP首部的最大长度是60个字节。即偏移最大为15个长度单位=1532位=154字节。
  • 保留
    • 6比特,供以后应用,现在置为0。
    • 6个标志位比特

    1、URG:当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,
    使接管方可以知道紧急数据共有多长。
    2、ACK:只有当ACK=1时,确认序号字段才有效;
    3、PSH:当PSH=1时,接收方应该尽快将本报文段立即传送给其应用层。
    4、RST:当RST=1时,表示出现连接错误,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
    5、SYN:SYN=1,ACK=0时表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段;
    6、FIN:发端完成发送任务。

  • 窗口
    • TCP通过滑动窗口的概念来进行流量控制。设想在发送端发送数据的速度很快而接收端接收速度却很慢的情况下,为了保证数据不丢失,显然需要进行流量控制, 协调好
    • 通信双方的工作节奏。所谓滑动窗口,可以理解成接收端所能提供的缓冲区大小。TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能提供多大的缓 冲区。窗口大小为
    • 字节数起始于确认序号字段指明的值(这个值是接收端正期望接收的字节)。窗口大小是一个16bit字段,因而窗口大小最大为65535字节。
  • 检验和
    • 检验和覆盖了整个TCP报文段:TCP首部和数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。
  • 紧急指针
    • 只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

【4.2】UDP协议

​ UDP(User Datagram Protocol)是互联网协议套件中的一种传输层协议,与TCP相比,UDP更加轻量化,提供了无连接、不可靠的通信服务。以下是UDP协议的主要特点和功能:

  1. 无连接:
    • UDP是一种无连接的协议,通信双方在通信之前不需要建立连接。
    • 每个UDP数据包都是独立的,没有先后顺序的关系。
  2. 不可靠性:
    • UDP不提供数据包的可靠性,不保证数据包的完整性、顺序性或交付。
    • 没有确认机制,也没有重传机制,适用于一些实时性要求高、对丢失数据包不敏感的应用场景。
  3. 面向数据报:
    • UDP是一种面向数据报的协议,每个UDP数据包被视为一个独立的数据报文。
    • 每个UDP数据包都包含了源端口和目标端口,用于标识数据包的发送者和接收者。
  4. 低延迟:
    • 由于不需要建立连接、没有确认和重传机制,UDP具有较低的通信延迟。
    • 适用于对通信延迟要求较高的实时应用,如实时音视频传输、在线游戏等。
  5. 广播和多播:
    • UDP支持广播和多播通信,可以将数据包同时发送给多个接收者。
    • 适用于一对多或多对多的通信场景。
  6. 轻量化:
    • 相较于TCP,UDP的头部开销较小,传输效率更高。
    • 适用于对通信效率要求较高、可以容忍一定数据丢失的应用场景。
  7. 无拥塞控制:
    • UDP不提供拥塞控制机制,因此在网络拥塞时可能导致数据包丢失。
    • 适用于对丢失数据包不敏感的应用,如实时音视频传输。

​ UDP通常用于那些对通信延迟要求较高、可以容忍一定数据丢失的应用场景,例如实时音视频传输、在线游戏、DNS查询等。由于其轻量化和简单性,UDP在特定的应用场景中具有一定的优势。

【4.2.1】UDP数据报

在这里插入图片描述

  • UDP数据报文结构如图所示

  • 源端口(Source Port):

    • 长度:16位
    • 表示发送端的端口号,用于标识发送方应用程序的端口。
  • 目标端口(Destination Port):

    • 长度:16位
    • 表示接收端的端口号,用于标识接收方应用程序的端口。
  • 长度(Length):

    • 长度:16位
    • 表示UDP数据报的总长度,包括头部和数据。
  • 校验和(Checksum):

    • 长度:16位
    • 用于检测UDP数据报在传输过程中是否发生错误。计算校验和时包括UDP头部和数据。
  • 数据(Data):

    • 长度:可变
    • 包含应用层传输的实际数据。UDP数据报的大小限制为64KB,包括头部和数据。

【5】应用层

​ 应用层是计算机网络体系结构中的最顶层,提供了网络服务和应用程序之间的接口。应用层协议定义了应用程序之间的通信规则和数据交换的方式。在应用层,不同应用程序通过使用特定的协议来进行通信,这些协议被称为应用层协议。

以下是应用层的主要特点和功能:

  1. 应用层协议:
    • 应用层协议是在应用层定义的,规定了应用程序之间的通信规则。
    • 例如,HTTP(用于Web通信)、SMTP(用于电子邮件传输)、FTP(用于文件传输)等都是应用层协议。
  2. 用户接口:
    • 提供了用户和网络之间的接口,使用户能够使用网络上的各种服务。
    • 用户通过应用层协议与远程应用程序通信,例如浏览器使用HTTP协议访问网页。
  3. 数据交换格式:
    • 规定了应用程序之间交换数据的格式和结构。
    • 数据交换格式可以是文本、图像、音频等,具体取决于应用层协议的设计。
  4. 网络服务:
    • 提供了一系列网络服务,包括电子邮件、文件传输、远程登录等。
    • 不同的应用层协议支持不同的网络服务。
  5. 端口标识:
    • 应用层使用端口号标识不同的应用程序,以便在同一主机上区分不同的服务。
    • 端口号是一个16位的整数,被分为两个范围:0-1023(系统端口)、1024-65535(动态或用户端口)。
  6. DNS(Domain Name System):
    • 应用层包括DNS服务,用于将域名解析为IP地址。

​ 一些常见的应用层协议包括HTTP(用于Web通信)、SMTP(用于电子邮件传输)、FTP(用于文件传输)、DNS(用于域名解析)等。应用层协议的选择取决于具体的应用需求。

【5.1】端口

  • 同一个端口号只能够表示一个正在运行的应用程序,端口号不能够冲突,但是,软件一旦关闭,就会释放出来占用的端口号,别的应用程序就能够使用了

    • 0-1023 之间的端口号都是系统使用的端口,尽量不要使用

    • 1024 - 8000 之间的端口一般是常用软件的端口号

      • MySQL:3306
      • Django:8000
      • flask:5000
      • ...
    • 8001 - 65535:我们自己开发的软件,端口一般选择8000之后的到65535

常用软件的端口号:
应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL
端口 20,21 69 23 25 53 80 22 3306
传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP
  • 以上是常见的端口号,但这个端口号不唯一,如果其他端口无人占用,也是可以改,但约定俗称且好记

【5.2】DNS

​ DNS(Domain Name System)是一种用于将域名(例如,www.example.com)转换为相应IP地址的分布式命名系统。它充当了互联网上的“电话簿”,使用户能够使用便于记忆的域名而不是IP地址来访问网络资源。

以下是DNS的主要功能和特点:

  1. 域名解析:
    • DNS负责将用户输入的域名解析为相应的IP地址。例如,将www.example.com解析为对应的IP地址。
  2. 层次结构:
    • DNS采用分层次的域名结构,分为顶级域(TLD)、二级域、三级域等。例如www.example.com中,.com是顶级域,example是二级域,www是三级域。
  3. 分布式数据库:
    • DNS数据库是分布式的,不同层次的域名服务器负责管理不同的域。这种分布式结构提高了系统的可靠性和效率。
  4. 域名服务器类型:
    • 递归域名服务器: 接收客户端的域名解析请求,负责递归地查询其他域名服务器,直到找到目标IP地址或报告无法解析。
    • 权威域名服务器: 存储特定域的DNS记录,提供对该域的解析服务。
  5. DNS缓存:
    • DNS服务器会缓存解析过的域名与IP地址的映射关系,以提高查询速度和减轻网络负担。
  6. DNS记录类型:
    • A记录(Address Record): 将域名映射到IPv4地址。
    • AAAA记录(IPv6 Address Record): 将域名映射到IPv6地址。
    • CNAME记录(Canonical Name): 别名,将一个域名指向另一个域名。
    • MX记录(Mail Exchange): 指定邮件服务器的域名。
    • PTR记录(Pointer Record): 用于反向DNS查找,将IP地址解析为域名。
  7. 域名注册和管理机构:
    • ICANN(Internet Corporation for Assigned Names and Numbers)负责全球域名系统的管理和分配,包括顶级域名的注册和分配。

​ DNS是互联网中至关重要的基础设施之一,它使得用户能够方便地使用易记的域名来访问互联网资源,而不必记住复杂的IP地址。

  • 【e.g.】
    • www.baidu.com ,可以通过 180.101.50.242访问
    • ……

image-20240118173932858

posted @ 2024-01-18 17:41  Lea4ning  阅读(118)  评论(0编辑  收藏  举报