网络通信与并发编程(一)网络通信、osi五层模型、tcp协议的三次握手与四次挥手

时间:2024-10-14 21:19:21

网络通信、osi五层模型、tcp协议的三次握手与四次挥手

文章目录

  • 网络通信、osi五层模型、tcp协议的三次握手与四次挥手
  • 一、网络通信
  • 二、osi五层模型
    • 1.物理层
    • 2.数据链路层
    • 3.网络层
    • 4.传输层
    • 5.应用层
  • 三、tcp协议的三次握手与四次挥手

一、网络通信

网络通信是指在网络中的两个或多个设备(如计算机、智能手机、服务器等)之间传输数据的过程。这些设备通过硬件(如电缆、无线信号等)和软件(如网络协议)相互连接,以确保数据可以在它们之间有效、可靠地传输。

网络通信有两种基本架构c/s(客户端/服务端)和b/s(浏览器/服务端)。对于网络通信中的服务端,一般 会要求其运行稳定且需要绑定一个固定的ip和端口号。

协议:协议规定了数据的格式和结构,网络通信本质是在传输一组组二进制的数字,通过协议可以确保发送者和接收者理解和处理相同的数据格式。

网络通信中数据传输的流程:应用层(client)→操作系统→传输层(包tcp头)→网络层(包ip头)→数据链路层(包以太网头)→物理层(转为二进制)→数据链路层(解以太网头)→网络层(解ip头)→传输层(解tcp头)→操作系统→应用层(server)

二、osi五层模型

1.物理层

物理层主要是基于电器特性发送高低电平的电信号,高电平为1,低电平为0。主要有中继器、集线器、双绞线等。

2.数据链路层

单纯的0、1数字没有意义,需要规定特定的分组才能表达特定的意义,数据链路层的功能是定义了电信号的分组方式。
数据链路层中有网桥、以太网交换机、网卡等设备。

以太网协议是一种统一的数据分组标准,其规定一组电信号构成一个包或者帧,每个包都由head和data组成。

  • head固定18个字节,其中源地址6个、目标地址6个、数据类型6个。
  • data包含46至1500个字节,其为传输数据的具体内容
  • head+data最短为64字节,最长为1518字节,超过最大限制的会分片发送

以太网协助的head中源地址和目标地址都是网卡的物理地址,这个地址也被称为mac地址。mac地址是唯一的,可以用来标识计算机的身份信息。

有了mac地址就可以实现在局域网广播通信。在局域网中计算机通信时会向其他计算机同时发送一个数据包,只有目标地址的计算机收到了发送的数据包以后才会采取回应。

3.网络层

数据链路层中有路由器等设备。
有了mac地址和广播机制以后,理论上世界上所有的计算机就可以实现彼此通信了。但是世界上有那么多的计算机,如果都通过广播的方式进行通信就会引发严重的效率问题,因此需要另外一种方式实现多局域网之间的通信。
ip协议就是针对上述的问题而产生的,ip协议规定:

  • 网络地址的协议叫ip协议,它定义的地址称之为ip地址,由32位二进制表示
  • ip地址的范围从0.0.0.0到255.255.255.255
  • ip地址也可以用四段的十进制表示,如127.0.0.1
  • ip地址分为两部分,一部分标识子网一部分标识主机

子网掩码是表示网络特征的参数,它也是由32为二进制组成的,它的网络部分由1组成,主机部分由0组成。
通过将ip地址和子网掩码进行与运算就可以判断任意的两个ip是否处于同一网络中,如已知两ip为172.16.10.1、172.16.10.2,子网掩码为255.255.255.0,两ip与子网掩码与的结果都是172.16.10.0所有两ip处于同一个网络中。

总结一下我们可以知道ip协议由两个主要的功能:

  • 为每台计算机分配ip地址
  • 确定哪些计算机处于同一网络中

ip数据包也由head和data组成,head长度为20至60字节,data长度为65515字节。ip数据包是以太网数据包的数据部分,一般传输的数据会在网络层包完ip头以后再传输到数据链路层包以太网头。如果ip数据包的数据过长,将会被分为几个以太网包进行发送。

有了ip地址以后就可以找到目标主机所在的网络,但是由于只知道目标主机的ip地址而不知道其mac地址,还是无法实现通信,此时就需要使用ARP协议了。
ARP协议的作用是将IP地址解析为物理地址的协议。在同一个局域网中,由于源主机不知道目标主机的mac地址,源主机会一广播的方式发送arp报文给局域网的所有主机,当目标主机接收报文以后会缓存源主机的mac地址并发送arp报文回应,以此让源主机获取mac地址。为了避免大量的广播包,每台主机都有一个arp缓存列表,该列表会缓存一段时间,当目标主机的mac地址存在arp缓存列表中时,源主机会根据该mac地址直接发送数据包。当两主机处于不同网络中时,源主机会先获取目标主机网关的mac地址,再由网关完成后续的操作。

4.传输层

有了上面的协议以后就可以完成计算机与计算机之间的通信了,但是当一台计算机同时打开多个应用程序时,又应该如何定位我们所需通信的应用程序呢?这就需要用到端口了,端口就是应用程序与网卡关联的编号,其范围在0至65535之间,其中0至1023为系统占用的端口。

传输层的主要功能是建立端口到端口的通信。其包括tcp和udp协议。
tcp协议:

  • 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包
  • 数据包包含以太网头、ip头、tcp头、数据
  • tcp协议建立通信包含三次握手、四次挥手

udp协议:

  • 不可靠传输,报头由8字节组成,总长不超过65535字节
  • 数据包包含以太网头、ip头、udp头、数据

5.应用层

应用层包含用户使用的许多应用程序,其功能是规定应用程序的数据格式,HTTP、FTP、mail协议等都是工作在该层。

由上面的osi五层网络可知,通过ip+mac+端口号可以确定唯一的应用程序。

三、tcp协议的三次握手与四次挥手

tcp协议在传输数据时首先要通过三次握手建立通信链接,然后基于这个链接进行通信,通信结束时再通过四次挥手解除链接。

在这里插入图片描述
三次握手:客户端发送建立发送信息通道请求报文(SYN)至服务端,服务端会将请求放到半连接池中,当自身有能力响应时根据客户端发送的请求发送回应信息(ACK)并请求客户端建立信息接收通道(SYN),客户端再发送回应报文(ACk),通信通道建立完成。

通信过程:客户端发送数据信息,服务端接收到数据以后会发送回应信息。

四次挥手:当客户端发送完数据以后向服务端发送结束信息发送通道请求(FIN),服务端接收请求并发送回应信息(ACK),当服务端接收完数据以后会向客户端发送接收信息接收通道请求(FIN),客户端接收请求并发送回应(ACK),通信通道解除。

为什么建立通信通道是三次握手,而解除通信通道是四次挥手?
建立通道时没有数据在传输,服务端回应建立发送信息通道和请求建立接收信息通道的报文合在一起发送了。解除通信通道时客户端发送完数据和服务端接收完数据的时间不是同步的,当客户端发送完数据时,服务端可能还在接收数据,所有要四次挥手解除通信通道。