【计算机网络基础知识】

首先举一个生活化的例子,当你和朋友打电话时,你可能会使用三次握手和四次挥手的过程进行类比:

三次握手(Three-Way Handshake):

  1. 你打电话给朋友:你首先拨打你朋友的电话号码并等待他接听。这就像客户端向服务器发送一个连接请求。

  2. 朋友接听电话:如果你朋友接听了电话,他会告诉你:“喂,我在这里!”这表示你的连接请求已经被接受。这就像服务器发送一个确认消息给客户端。

  3. 你确认朋友的回答:在你确认朋友在电话线的另一端时,你会说:“好的,我听到了!”这表示你已经知道连接已经建立了。这就是客户端再次向服务器发送一个确认消息。

思考:为什么要三次握手呢,有人说两次握手就好了

举例:已失效的连接请求报文段。

client发送了第一个连接的请求报文,但是由于网络不好,这个请求没有立即到达服务端,而是在某个网络节点中滞留了,直到某个时间才到达server,本来这已经是一个失效的报文,但是server端接收到这个请求报文后,还是会想client发出确认的报文,表示同意连接。

假如不采用三次握手,那么只要server发出确认,新的建立就连接了,但其实这个请求是失效的请求,client是不会理睬server的确认信息,也不会向服务端发送确认的请求,但是server认为新的连接已经建立起来了,并一直等待client发来数据,这样,server的很多资源就没白白浪费掉了,采用三次握手就是为了防止这种情况的发生,server会因为收不到确认的报文,就知道client并没有建立连接。这就是三次握手的作用。

四次挥手(Four-Way Handshake):

  1. 通话结束:当你和朋友的谈话结束时,你会说:“好的,我得挂了。”这就像客户端发送一个关闭连接的请求给服务器。

  2. 朋友确认挂断:你的朋友会回答:“好的,再见!”这表示服务器已经收到了关闭连接的请求,并且也准备好关闭连接。但是他仍然会等待任何未处理的数据。这是服务器发送一个确认关闭的消息给客户端。

  3. 朋友准备好了:一旦你的朋友处理了所有数据,他会再次说:“好的,现在我也准备好了,我们断开连接吧!”这就像服务器发送一个关闭连接的请求给客户端。

  4. 确认断开连接:你会回答:“好的,再见!”这表示客户端收到了服务器的关闭请求,并且也准备好关闭连接。这就是客户端发送一个确认关闭的消息给服务器。

思考:那么为什么是4次挥手呢?

为了确保数据能够完成传输。

关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

可能有人会有疑问,tcp我握手的时候为何ACK(确认)和SYN(建立连接)是一起发送。挥手的时候为什么是分开的时候发送呢?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭 SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步挥手。

思考:客户端突然挂掉了怎么办?

思考:客户端突然挂掉了怎么办?

正常连接时,客户端突然挂掉了,如果没有措施处理这种情况,那么就会出现客户端和服务器端出现长时期的空闲。解决办法是在服务器端设置保活计时器,每当服务器收到客户端的消息,就将计时器复位。超时时间通常设置为2小时。

若服务器超过2小时没收到客户的信息,他就发送探测报文段。若发送了10个探测报文段,每一个相隔75秒,还没有响应就认为客户端出了故障,因而终止该连接。

1.详细讲一下TCP的三次握手与四次挥手

三次握手(Three-Way Handshake)

  1. 第一步:客户端发送 SYN 请求

    • 客户端向服务器发送一个SYN(同步)标志位的数据包,表明客户端想要建立连接。该数据包中还包含客户端的初始序列号(Sequence Number)。
  2. 第二步:服务器确认 SYN 请求

    • 服务器收到客户端发送的SYN请求后,会发送一个SYN-ACK(同步-确认)标志位的数据包作为响应。这个数据包中的SYN标志位表示服务器接收到了客户端的SYN请求,ACK标志位表示服务器同意建立连接,并在确认号(Acknowledgment Number)字段中回复客户端的初始序列号+1,同时也会发送自己的初始序列号。
  3. 第三步:客户端确认 SYN-ACK

    • 客户端收到服务器的SYN-ACK响应后,会发送一个确认数据包,其中ACK标志位置为1,表示客户端确认收到了服务器的响应。同时,客户端会将确认号设置为服务器初始序列号+1。

完成这个过程后,TCP连接就建立起来了,双方可以开始进行数据传输。

四次挥手(Four-Way Handshake)

  1. 第一步:客户端发送关闭连接请求

    • 当客户端决定关闭连接时,会发送一个FIN(结束)标志位的数据包给服务器,表示客户端不再有数据要发送了,但仍可以接收数据。
  2. 第二步:服务器确认关闭请求

    • 服务器收到客户端的FIN后,会发送一个ACK确认数据包,表明服务器收到了关闭请求。服务器在这个响应中可能还会包含一些剩余数据,如果有的话。
  3. 第三步:服务器发送关闭请求

    • 当服务器也准备好关闭连接时,会发送一个FIN标志位的数据包给客户端,表明服务器不再有数据要发送了。
  4. 第四步:客户端确认关闭请求

    • 客户端收到服务器的FIN后,会发送一个ACK确认数据包给服务器,表明客户端收到了关闭请求。然后等待一段时间,确保服务器收到了这个确认,最后关闭连接。

完成这个过程后,TCP连接就彻底关闭了,双方不再进行数据传输。

2.为什么是三次握手不是两次呢,为什么是四次挥手不是三次呢?

为什么是三次握手而不是两次?

  • 第一次握手(SYN):客户端向服务器发送连接请求,并指明初始序列号。
  • 第二次握手(SYN + ACK):服务器收到请求后,确认连接请求,并发送自己的序列号。
  • 第三次握手(ACK):客户端收到服务器的确认后,也发送确认消息,表示连接已建立。

三次握手的设计是为了解决可能出现的两种情况:重复连接请求和延迟的连接请求。通过三次握手,确保了双方的状态都同步了,建立了可靠的连接。

为什么是四次挥手而不是三次?

  • 第一次挥手(FIN):客户端发送关闭连接请求。
  • 第二次挥手(ACK):服务器收到关闭请求后,发送确认消息。
  • 第三次挥手(FIN):服务器在关闭连接之前,先发送关闭连接请求。
  • 第四次挥手(ACK):客户端收到服务器的关闭请求后,发送确认消息,完成连接的关闭。

四次挥手的设计是为了确保双方都能够知道连接已经关闭,避免出现半关闭状态,即其中一方已经关闭了连接,而另一方还在发送数据的情况。

     TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(数据可在两个方向上同时传递)。所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭。关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接,收到这个FIN表示这个方向上再没有数据流动,但是收到FIN的那一端仍然可以发送数据。但在发生这个过程以后,服务端可能需要继续发送数据(这个阶段是close_wait),在服务端也确保需要关闭的时候,服务端再发送FIN,尝试去关闭。

3.get和post的区别,分别适用于什么场景?

一、TCP不会丢数据

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过一系列机制来确保数据的可靠传输,包括:

  1. 序列号:TCP给每个数据包分配一个序列号,确保接收方能够按照正确的顺序接收并重组数据包。
  2. 确认应答:接收方在接收到数据包后会回复一个确认消息(ACK),表示已经成功接收到数据,并且确认下一个期望接收的数据包序号。
  3. 超时重传:如果发送方在一定时间内没有收到接收方的确认消息,就会认为数据包丢失,并重新发送该数据包。

这些机制共同作用,使得TCP在大多数情况下能够确保数据的可靠传输,即不会丢数据。

二、TCP可能会粘包

然而,关于“粘包”的问题,这实际上是TCP字节流特性的一种表现,而不是TCP本身的一个错误或问题。TCP是一个面向字节流的协议,它并不保留消息的边界。当发送方连续发送多个数据包时,这些数据包在TCP看来只是一串连续的字节流。接收方在接收这些字节流时,可能无法准确地按照发送方的数据包边界来接收,这就可能导致所谓的“粘包”现象。

解决TCP粘包问题的方法通常包括:

  1. 固定长度:发送方每次发送固定长度的数据包,接收方按照固定长度来接收数据。
  2. 特殊标记:在数据包的末尾添加特殊标记(如换行符、回车符等),接收方根据这些标记来分割数据包。
  3. 长度字段:在每个数据包的头部添加一个表示数据长度的字段,接收方根据这个字段来确定每个数据包的大小。

总结

get()请求是一种 HTTP 方法,用于从服务器检索数据。它将请求的数据附加在 URL 后面,以查询字符串的形式出现。特点:

  • 安全性和隐私性较低,因为请求数据暴露在 URL 中。
  • 数据量有限制,通常不超过 2KB。
  • 适合请求无状态的操作,如页面跳转、检索数据等。

post()请求是一种 HTTP 方法,用于向服务器发送数据。它将数据存储在请求体中,不会出现在 URL 中。特点:

  • 安全性和隐私性较高,因为数据不暴露在 URL 中。
  • 数据量较大,没有大小限制。
  • 适合请求有状态的操作,如表单提交、上传文件等。

适用场景

(1)GET 请求适用于:

数据检索:如查询数据库记录。

页面跳转:如导航到其他页面。

无状态操作:如天气预报、新闻检索等。

(2)POST 请求适用于:

数据提交:如表单提交、上传文件。

数据创建:如添加新记录到数据库。

有状态操作:如购物车结算、用户登录等。

无状态操作和有状态操作的区别

  • 无状态操作:指的是每次请求都是独立的,不依赖于之前的状态。服务器处理请求时,不会考虑之前的请求或会话信息。这使得无状态操作易于扩展和维护,因为服务器不需要存储任何会话信息。GET请求通常用于无状态操作。
  • 有状态操作:指的是请求可能会改变服务器的状态,或者依赖于之前的请求或会话信息。有状态操作通常需要服务器存储一些信息,比如用户的会话状态或事务状态。POST请求通常用于有状态操作。

深入理解


1.GET 和 POST都是http请求方式, 底层都是 TCP/IP协议;通常GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包(但firefox是发送一个数据包),

2.对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200
(返回数据)表示成功;

而对于 POST,浏览器先发送 header,服务器响应 100, 浏览器再继续发送 data,服
务器响应 200 (返回数据)。

套接字是什么

套接字(socket)

首先,套接字可以理解为是一套代码库和接口层。它是对网络中不同主机间进程间通信端点的抽象。套接字提供了端到端的通信服务,允许位于不同主机上的两个进程之间进行数据交换

通过网络通信的每对进程需要使用一对套接字。不同的进程之间的通信所使用的套接字是不一样的,套接字可以用来区分不同的进程之间的数据传输。套接字主要有目标IP、传输层使用的传输协议、传输层使用的端口号这3个重要参数。

套接字(Socket)大致位于OSI模型的会话层、TCP/IP模型的应用层,每一台机器都有一个套接字,可以想象成套接字是机器的端口,他们之间都有一条虚拟的电缆,电缆的每一段都插入到套接字中,也就是说一台机器上的套接字可以和另一台机器上的套接字组成一条通信通道,我们可以用这个通道在两台机器之间发送数据。

基于TCP协议的服务器和客户端Socket通信流程的详细步骤:
 

服务器端流程

  1. 创建Socket

    • 服务器端首先调用socket()函数创建一个Socket,该函数返回一个文件描述符,用于后续的通信操作。在创建时,需要指定地址族(如AF_INET表示IPv4)、套接字类型(如SOCK_STREAM表示TCP协议)和协议(通常为0,表示自动选择协议)。

  2. 绑定Socket到地址和端口

    • 使用bind()函数将Socket绑定到一个本地地址和端口上。这个地址通常是服务器机器的IP地址(或者是一个特殊的地址,如INADDR_ANY,表示接受任何来自本机网络接口的连接),而端口号是一个16位的数字,用于区分不同的服务。

  3. 监听端口

    • 调用listen()函数将Socket设置为监听模式,准备接受客户端的连接请求。在调用listen()时,需要指定一个“backlog”参数,该参数决定了服务器端Socket在开始拒绝新的连接请求之前,可以排队等待接受的最大连接数。

  4. 接受连接

    • 服务器通过调用accept()函数阻塞等待客户端的连接请求。当有客户端连接请求到达时,accept()会创建一个新的Socket,专门用于与该客户端的通信,并返回这个新Socket的文件描述符。此后,服务器就可以通过这个新的Socket与客户端进行通信了。

  5. 数据交换

    • 通过read()recv()函数从Socket中读取客户端发送的数据,通过write()send()函数向Socket中写入数据发送给客户端。在数据传输过程中,数据会在用户空间(应用程序使用的内存)和内核空间(操作系统核心组件使用的内存)之间进行复制。

  6. 关闭连接

    • 数据传输完成后,服务器可以调用close()函数关闭与客户端的连接,结束通信。

客户端流程

  1. 创建Socket

    • 类似于服务器端,客户端首先调用socket()函数创建一个Socket。

  2. 连接服务器

    • 使用connect()函数向服务器的指定地址和端口发起连接请求。如果连接成功,客户端和服务器之间的通信链路就建立起来了。

  3. 数据交换

    • 客户端通过write()send()函数向Socket中写入数据发送给服务器,通过read()recv()函数从Socket中读取服务器发送的数据。

  4. 关闭连接

    • 数据传输完成后,客户端可以调用close()函数关闭与服务器的连接,结束通信。

OSI七层模型

OSI七层模型:OSI模型将网络通信过程划分为七个层次,每个层次负责特定的功能,从而使整个通信过程更加模块化和可管理。各层次之间通过接口进行通信,下层为上层提供服务,上层使用下层提供的服务.

  1. 物理层(Physical Layer)

    • 功能:物理层是OSI模型的最底层,主要定义物理设备标准、传输介质的接口类型、传输速率等,并负责在物理媒介上传输原始比特流。它主要关注硬件细节和传输介质的特性,确保比特流在网络媒介中的可靠传输。

    • 关键技术:包括电缆、光纤等传输介质的物理特性,以及信号的调制和解调技术。

  2. 数据链路层(Data Link Layer)

    • 功能:数据链路层负责将物理层传输的比特流组织成帧,进行物理寻址和错误检测。它确保数据帧从源设备传输到目标设备的过程中,数据的完整性和正确性。

    • 关键技术:帧封装、物理寻址、流量控制、错误检测与纠正等。

  3. 网络层(Network Layer)

    • 功能:网络层提供数据包的传输服务,实现源到目的地的路径选择。它使用逻辑地址(如IP地址)来识别网络上的设备,并通过路由算法选择最佳路径,确保数据包从源端到目的端的可靠传输。

    • 关键技术:路由算法、逻辑寻址、分组转发等。

  4. 传输层(Transport Layer)

    • 功能:传输层负责端到端的通信,确保数据的可靠传输。它提供传输数据的协议和端口号,如TCP和UDP,分别用于可靠传输和不可靠传输。

    • 关键技术:差错检测与纠正、流量控制、可靠性传输、无连接传输等。

  5. 会话层(Session Layer)

    • 功能:会话层负责建立、管理和终止会话,确保数据的同步和控制。它提供会话控制服务,使两个应用程序能够建立和维护通信会话。

    • 关键技术:会话建立与维护、数据同步等。

  6. 表示层(Presentation Layer)

    • 功能:表示层主要负责数据的格式转换、加密和解密、压缩和解压缩等。它将应用层的数据转换为网络传输时所需的格式,并在接收端进行反向转换。

    • 关键技术:数据格式转换、加密解密、压缩解压缩等

  7. 应用层(Application Layer)

    • 功能:应用层是OSI模型的最高层,直接为用户提供网络服务。它包含了各种网络应用程序和协议,如HTTP、FTP、SMTP等,用于实现各种网络应用。

    • 关键技术:网络应用程序和协议的实现,如Web浏览、文件传输、电子邮件等。

TCP IP 模型

1、网络接口层

网络接口层是TCP/IP 四层模型中的第一层,是 OSI 参考模型中定义的物理层数据链路层的组合,这一层主要涉及计算机连接互联网的基础设施,比如以太网电缆、无线网络、网络接口卡、计算机中的设备驱动程序等等。

网络接口层还负责同一网络上两个设备之间的数据传输,例如将数字数据转换为可传输信号。

网络接口层还有一个就是将IP数据报封装成网络传输的帧,并将IP地址映射到物理地址。

网络接口层

网络接口层涉及协议

网络接口层主要涉及以下协议:

  • 802.3(以太网)

  • 802.11(Wi-Fi)

  • PPP:点对点协议,提供成帧以及许多提高安全性和性能的附加功能。

  • 令牌环

  • FDDI

  • X.25

  • 帧中继

  • SLIP:串行链路 Internet 协议,提供基本的 IP 帧。

802.3(以太网):IEEE 802.3标准,这是以太网的标准,涉及局域网(LAN)的技术规范。这个标准定义了物理层和数据链路层的规范,包括传输介质、电缆类型和传输速度等。以太网最早是由Xerox(施乐)公司创建的,在1980年由DEC、Intel和Xerox三家公司联合开发为一个标准。以太网是应用最为广泛的局域网,包括标准以太网(10Mbps)、快速以太网(100Mbps)、千兆以太网(1000 Mbps)和10G以太网,它们都符合IEEE802.3系列标准规范。

802.11(Wi-Fi):802.11IEEE(Institute of Electrical and Electronics Engineers)制定的无线局域网(WLAN)标准。这个标准最初于1997年发布,旨在解决办公室局域网和校园网中用户与用户终端的无线接入问题。802.11标准最初的数据传输速率最高只能达到2Mbit/s,但随着技术的发展,后续出现了如802.11b和802.11a等改进版本,这些版本不仅提高了数据传输速率,还扩展了无线局域网的应用范围。例如,802.11b已成为主流标准,而802.11a也被许多厂商看好。此外,802.11标准族还包括其他变体,如802.11p专门用于车用电子的无线通信,以及802.11s用于Mesh网络等。这些标准共同推动了无线网络技术的发展,使得无线设备如电脑、手机、电视等能够通过Wi-Fi连接到互联网。

无线局域网所采用的是802.11系列标准,它也是由IEEE 802标准委员会制定的。目前这一系列主要有4个标准,分别为:802.11b(ISM 2.4GHz)、802.11a (5GHz)、802.11g(ISM 2.4GHz) 和802.11z,前三个标准都是针对传输速度进行的改进,最开始推出的是802.11b,它的传输速度为11MB/s,因为它的连接速度比较低,随后推出了802.11a标准,它的连接速度可达54MB/s。但由于两者不互相兼容,致使一些早已购买802.11b标准的无线网络设备在新的802.11a网络中不能用,所以在今年前些时候正式推出了兼容802.11b与802.11a两种标准的802.11g,这样原有的802.11b和802.11a两种标准的设备都可以在同一网络中使用。802.11z是一种专门为了加强无线局域网安全的标准。因为无线局域网的“无线”特点,致使任何进入此网络覆盖区的用户都可以轻松以临时用户身份进入网络,给网络带来了极大的不安全因素(常见的安全漏洞有:SSID广播、数据以明文传输及未采取任何认证或加密措施等)。为此802.11z标准专门就无线网络的安全性方面作了明确规定,加强了用户身份认证制度,并对传输的数据进行加密。所使用的方法/算法有:WEP(RC4-128预共享密钥,WPA/WPA2(802.11 RADIUS集中式身份认证,使用TKIP与/或AES加密算法)与WPA(预共享密钥)。

区别

  1. 应用场景

    • 802.3协议:主要适用于有线局域网(LAN),特别是以太网(Ethernet)技术。它定义了物理层和数据链路层的通信规范,使得通过双绞线、同轴电缆或光纤等有线介质连接的设备能够相互通信。

    • 802.11协议:则专门用于无线局域网(WLAN),是WiFi技术的核心标准。它同样定义了物理层和数据链路层的规范,但针对的是无线传输的特性,如信号衰减、干扰等。

  2. 传输介质

    • 802.3:使用物理的有线介质进行数据传输,如铜缆(双绞线、同轴电缆)或光纤。

    • 802.11:利用无线电波作为传输介质,实现设备之间的无线连接。

  3. 传输特性和限制

  1. 802.3:由于使用有线介质(如同轴电缆、双绞线和光纤),传输速度通常较快,且信号衰减和干扰较小,以及CSMA/CD(载波侦听多路访问/冲突检测)协议,确保了数据传输的高效性和可靠性。

  1. 802.11:无线传输容易受到环境因素的影响,如障碍物、距离、其他无线电波干扰等,导致信号衰减和传输速度下降。此外,无线网络的覆盖范围也有限。

  2. 安全性

    • 两者都提供了多种安全机制来保护数据传输的安全性,但802.11由于无线传输的特性,需要更复杂的加密和认证技术来防止未授权访问和数据泄露。

PPP:点对点协议,提供成帧以及许多提高安全性和性能的附加功能。PPP链路的建立有三个阶段的协商过程:链路层协商,认证协商(可选)和网络层协商。

链路层协商:通过LCP报文进行链路参数协商,建立链路层连接。(MRU,认证模式,聚合等)

认证协商(可选):通过链路建立阶段的认证方式进行链路认证。

网络层协商:通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。

主要功能

  1. 动态分配IP地址:PPP具有在连接时刻协商IP地址的能力,允许动态分配IP地址。

  2. 支持多种网络协议:PPP支持多种网络层协议,如TCP/IP、NetBEUI、NWLINK等,允许多个网络协议在同一通信链路上运行。

  3. 错误检测与校验:PPP具有错误检测能力,但不具备纠错能力,使用帧校验串行FCS(Frame Check Sequence)来检查每一个单独的帧是否发生错误。

  4. 身份验证:PPP具有身份验证功能,支持密码验证协议(PAP)和挑战握手验证协议(CHAP),增强了通信的安全性。

  5. 链路控制:通过链路控制协议(LCP)建立、配置、测试和管理数据链路连接,确保链路的稳定性和可靠性。

  6. 网络控制:通过网络控制协议(NCP)协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议。

应用场景

PPP协议广泛应用于各种网络环境中,特别是Internet接入和远程通信领域。例如,ISP(Internet服务提供商)通常使用PPP来允许拨号用户连接到Internet;家庭用户通过PPPoE(PPP over Ethernet)技术接入宽带网络;在ATM(异步传输模式)网络上,PPP协议也被用于管理用户认证(PPPoA)

  • 令牌环

  • FDDI

令牌环网(Token Ring)是一种 LAN 协议,定义在 IEEE 802.5 中,其中所有的工作站都连接到一个环上,每个工作站只能同直接相邻的工作站传输数据。通过围绕环的令牌信息授予工作站传输权限。

IEEE 802.5 中定义的令牌环源自 IBM 令牌环 LAN 技术。两种方式都基于令牌传递(Token Passing)技术。虽有少许差别,但总体而言,两种方式是相互兼容的。

令牌环网(Token Ring)适合于低速网络,光纤分布式数据接口(FDDI)适合于高速网络。

2、令牌环网(Token Ring) 
  令牌环网是IBM公司于20世纪70年代发展的,现在这种网络比较少见。在老式的令牌环网中,数据传输速度为4Mbps16Mbps,新型的快速令牌环网速度可达100Mbps。令牌环网的传输方法在物理上采用了星形拓扑结构,但逻辑上仍是环形拓扑结构。结点间采用多站访问部件(Multistation Access UnitMAU)连接在一起。MAU是一种专业化集线器,它是用来围绕工作站计算机的环路进行传输。由于数据包看起来像在环中传输,所以在工作站和MAU中没有终结器。 
  在这种网络中,有一种专门的帧称为“令牌”,在环路上持续地传输来确定一个结点何时可以发送包。令牌为24位长,有38位的域,分别是首定界符(Start DelimiterSD)、访问控制(Access ControlAC)和终定界符(End DelimiterED)。首定界符是一种与众不同的信号模式,作为一种非数据信号表现出来,用途是防止它被解释成其它东西。这种独特的8位组合只能被识别为帧首标识符(SOF)。由于目前以太网技术发展迅速,令牌网存在固有缺点,令牌在整个计算机局域网已不多见,原来提供令牌网设备的厂商多数也退出了市场,所以在目前局域网市场中令牌网可以说是“明日黄花”了。

3FDDI网(Fiber Distributed Data Interface 
FDDI的英文全称为“Fiber Distributed Data Interface”,中文名为“光纤分布式数据接口”,它是于80年代中期发展起来一项局域网技术,它提供的高速数据通信能力要高于当时的以太网(10Mbps)和令牌网(416Mbps)的能力。FDDI标准由ANSI X3T9.5标准委员会制订,为繁忙网络上的高容量输入输出提供了一种访问方法。FDDI技术同IBMTokenring技术相似,并具有LANTokenring所缺乏的管理、控制和可靠性措施,FDDI支持长达2KM的多模光纤。FDDI网络的主要缺点是价格同前面所介绍的“快速以太网”相比贵许多,且因为它只支持光缆和5类电缆,所以使用环境受到限制、从以太网升级更是面临大量移植问题。 
  当数据以100Mbps的速度输入输出时,在当时FDDI10Mbps的以太网和令牌环网相比性能有相当大的改进。但是随着快速以太网和千兆以太网技术的发展,用FDDI的人就越来越少了。因为FDDI使用的通信介质是光纤,这一点它比快速以太网及现在的100Mbps令牌网传输介质要贵许多,然而FDDI最常见的应用只是提供对网络服务器的快速访问,所以在目前FDDI技术并没有得到充分的认可和广泛的应用。 
FDDI的访问方法与令牌环网的访问方法类似,在网络通信中均采用“令牌”传递。它与标准的令牌环又有所不同,主要在于FDDI使用定时的令牌访问方法。FDDI令牌沿网络环路从一个结点向另一个结点移动,如果某结点不需要传输数据,FDDI将获取令牌并将其发送到下一个结点中。如果处理令牌的结点需要传输,那么在指定的称为“目标令牌循环时间”(Target Token Rotation TimeTTRT)的时间内,它可以按照用户的需求来发送尽可能多的帧。因为FDDI采用的是定时的令牌方法,所以在给定时间中,来自多个结点的多个帧可能都在网络上,以为用户提供高容量的通信。 
FDDI可以发送两种类型的包:同步的和异步的。同步通信用于要求连续进行且对时间敏感的传输(如音频、视频和多媒体通信);异步通信用于不要求连续脉冲串的普通的数据传输。在给定的网络中,TTRT等于某结点同步传输需要的总时间加上最大的帧在网络上沿环路进行传输的时间。FDDI使用两条环路,所以当其中一条出现故障时,数据可以从另一条环路上到达目的地。连接到FDDI的结点主要有两类,即A类和B类。A类结点与两个环路都有连接,由网络设备如集线器等组成,并具备重新配置环路结构以在网络崩溃时使用单个环路的能力;B类结点通过A类结点的设备连接在FDDI网络上,B类结点包括服务器或工作站等。

X.25协议主要应用于早期的计算机通信和远程访问系统中,如ATM机、POS机、票据打印机等,以及一些特定行业的数据通信系统中。随着网络技术的发展,虽然X.25协议在一些新领域的应用逐渐减少,但在某些特定场景和行业中仍然具有一定的应用价值。

相关协议

值得一提的是,AX.25协议是对X.25协议在无线电信道上的修改和补充,主要用于业余无线电分组通信网中。AX.25协议扩展了地址域,并增加了无标号信息(UI)帧,以适应无线通信环境的需求。

X.25的分组交换体系结构具有一些优点和缺陷。信息分组通过散列网络的路由是根据这个分组头中的目的地址信息进行选择的。用户可以与多个不同的地点进行连接,而不象面向电路的网络那样在任何两点之间仅仅存在一条专用线路。由于分组可以通过路由器的共享端口进行传 输的,所以就存在一定的分发延迟。虽然许多网络能够通过选择回避拥挤区域的路由来支持过载的通信量,但是随着访问网络人数的增多,用户还是可以感觉到性能变慢了。和此相反,面向电路的网络在两个地点之间提供一个固定的带宽,它不能适应超过这个带宽的传输的要求。

X.25的开销比帧中继要高许多。例如,在X.25中,在一个分组的传输路径上的每个结点都必须完整地接收一个分组,并且在发送之前还必须完成错误检查。帧中继结点只是简单地查看分组头中的目的地址信息,并立即转发该分组,在一些情况下,甚至在它完整地接收一个分组之前就开始转发。帧中继不需要 X.25中必须在每个中间结点中存在的用于处理管理、流控和错误检查的状态表。端点结点必须对丢失的帧进行检查,并请求重发。

X.25受到了低性能的影响,它不能适应许多实时LAN对LAN应用的要求。然而,X.25很容易建立,很容易理解,并且已被远程终端或计算机访问,以及传输量较低的许多情况所接收。X.25可能是电话系统网络不可靠的国家建立可靠网络链路的唯一途径。许多国家使用X.25服务。与此不同,在一些国家获得可靠的专用线路并不是不可能的。

在美国,大多数电讯公司和增值电信局(VAC)提供X.25服务,这些公司包括AT&T、US Sprint、compuserve、Ameritech、Pacific Be1l和其它公司。还可以通过在用户所在地安装X.25交换设备,并用租用线路将这些地点连接起来,来建立专用的X.25分组交换网络。

X.25是在开放式系统互联(OSI)协议模型之前提出的,所以一些用来解释x.25的专用术语是不同的。这种标准在三个层定义协议,它和OSI协议栈的底下三层是紧密相关的。

一、协议层次与功能

  • X.25协议

    • 层次结构:X.25协议采用分层的体系结构,自下而上分为物理层、数据链路层和分组层,分别对应于OSI参考模型的下三层。

    • 功能:X.25协议主要定义了数据传输通路的建立、保持和释放过程所需遵循的标准,以及数据传输过程中进行差错控制和流量控制的机制。它强调网络内数据传输的可靠性,通过复杂的协议机制来保证数据的完整性和准确性。

  • 帧中继

    • 层次简化:帧中继协议是对X.25协议的简化,它只保留了物理层和数据链路层,省去了X.25的分组层。这种简化使得帧中继协议更加高效,减少了处理时间。

    • 功能特点:帧中继主要着眼于数据的快速传输,最大程度地提高网络吞吐量。它通过简化协议层次和减少差错控制、流量控制等机制在网络内部的实现,将这些功能推到网络的边界(即用户端设备),从而实现了轻载协议网络。

二、传输效率与可靠性

  • X.25

    • 传输效率:由于X.25协议层次较多,且包含了复杂的差错控制和流量控制机制,因此其传输效率相对较低。每个节点都需要进行帧校验等处理,导致时延较大。

    • 可靠性:X.25协议通过严格的协议机制来保证数据传输的可靠性,包括差错控制和流量控制等。这使得X.25协议在误码率较高的通信环境中具有较好的表现。

  • 帧中继

    • 传输效率:帧中继协议简化了协议层次和减少了内部处理机制,使得其传输效率显著提高。网络中的时延较小,能够达到较高的传输速率。

    • 可靠性:帧中继协议将差错控制和流量控制等机制推到用户端设备,由用户端设备负责这些功能的实现。因此,帧中继协议在传输效率上优于X.25,但在可靠性方面可能略逊一筹。然而,随着现代通信技术的发展,数据传输误码率大大降低,帧中继协议在实际应用中也能满足大多数场景的可靠性要求。

三、应用场景与发展趋势

  • X.25

    • 应用场景:X.25协议主要用于早期的分组交换网中,特别是在需要高可靠性的数据传输场景中。然而,随着网络技术的发展和新的通信协议的出现,X.25协议的应用范围逐渐缩小。

    • 发展趋势:由于X.25协议的复杂性和相对较低的传输效率,它在现代通信网络中已逐渐被新的协议所取代。但在某些特定领域或场景中,X.25协议仍具有一定的应用价值。

  • 帧中继

    • 应用场景:帧中继协议因其高传输效率和较低的协议复杂性而被广泛应用于广域网(WAN)中。它特别适合于传递数据业务,如企业之间的数据传输、远程访问等场景。

    • 发展趋势:随着网络技术的不断发展和IP技术的普及,帧中继协议也在逐渐演进。虽然其应用范围受到一些限制(如无法直接支持IP路由等),但帧中继技术仍然在某些领域发挥着重要作用。同时,随着新的通信技术和协议的出现(如MPLS等),帧中继技术也在与这些新技术进行融合和创新。

帧中继协议主要工作在OSI模型的数据链路层。它简化了X.25协议的复杂性,去除了网络层的功能,仅保留了物理层和数据链路层的功能。在帧中继中,物理层负责数据传输的物理介质和电气特性,而数据链路层则负责帧的封装、传输和错误检测等功能。

X.25协议是一个分层协议,其层次结构遵循OSI(开放系统互连)模型。具体来说,X.25协议的层次结构主要包括以下几层:

  • 物理层:定义了DTE(数据终端设备)和DCE(数据通信设备)之间进行连接的一些物理电气特性。在X.25中,物理层可能采用ITU-T V.24等协议标准。

  • 数据链路层:定义了DTE和DCE之间交互帧的格式,提供可靠的数据传输功能。在X.25中,数据链路层使用的协议通常是HDLC(高级数据链路控制)的一个子集,即LAP-B(平衡型链路访问规程)。

  • 网络层:在X.25中,网络层主要负责组成控制和数据分组,并建立虚电路连接。这一层定义了分组的格式,提供了虚电路服务,包括交换虚电路(SVC)和永久虚电路(PVC)。

  • SLIP:串行链路 Internet 协议,提供基本的 IP 帧。

网络接口层工作流程

网络接口层其实可以细分为三层:

网络接口层细分

  • 逻辑链路控制,英文缩写LLC,负责处理网络层使用的协议的信息,LLC 在接收端帮助决定将数据包传递到目标网络层的相应协议。

  • MAC 层将源 MAC 地址和目标 MAC 地址添加到数据帧中。

  • 物理层将数据帧转换为可以通过网络传输的格式。

比如在有线环境下,物理层会将数据帧转换为电信号,在通信的另一方,将电信号转换回数据帧,从数据包中删除标头,然后将数据包重新组合成完整的数据。

2、网络层

网络接口层是TCP/IP 四层模型的第二层,又称为互联网层,该层控制流量的流动和路由、寻址,确保数据快速准确地发送,还负责在其目的地重新组装数据包。

  • 寻址:为了与其他主机通信,网络上的每个主机都有一个唯一的标识符,使用这个标识符将数据发送到网络上的特定计算机。唯一标识符有两种类型:逻辑地址物理地址。网路层提供的是一个逻辑地址,即 IP 地址

  • 路由:将数据包从源移动到目的地的方法,一般运行在路由器上或者支持路由的交换机上,网络设备上运行的算法可以为数据包的传递找到最佳最短的路径。

网络层

网络层涉及协议

网络层涉及的协议主要有:

  • IP

  • ARP

  • ICMP

其中最核心的是IP协议,我们放到本节最后讲,先来看下ARP:

ARP

我们常说的ARP解析就是这个ARP,ARP的英文全称是Address Resolution Protocol,中文意思就是地址解析协议,用于识别 MAC 地址,如果设备知道目标设备的 IP 地址,则 ARP 向局域网中的所有设备发送请求,来搜索具有给定 IP 的设备的 MAC 地址,然后具有该 IP 的设备会发送一个带有其 MAC 地址的 ARP 响应。

在 Windows 或 macOS 中,可以在终端中输入命令arp -a查询ARP 表:

ICMP

ICMP英文全称Internet Control Message Protocol,中文意思就是互联网控制消息协议,用于报告主机之间通信错误,比如用的最多的就是ping,ping可以检查主机之间是否存在连接,检查丢失的数据包数量和传输延迟。

IP

IP是非常重要的协议,英文全称Internet protocol,中文意思就是互联网协议

IP协议有两个版本:

  • IPv4

  • IPv6

IPv4 使用更广泛,但只有32 位用于寻址,大约有 43 亿(约 4.3×10 9)个可用地址,但不幸的是,在 2019 年 11 月 25 日这一天,根据欧洲区域互联网注册机构 RIPE 说法,IPv4 地址已经全部分配完。

40 多亿个 IP 地址中,有15多亿个是分配给美国,是所有国家中数量最多的,每 1000 人大约有4911个 IP 地址,这些约占 IP 地址总数的 35.9%。

中国的 IP 地址数量位居第二,为 3 亿多个,约占 IP 地址总数的 7.7%,中国人口比美国多得多了,人均 IP 地址数非常少。

后面第三名、第四名、第五名分别是:

  • 日本,拥有2亿多个

  • 英国,拥有1亿2千多万个

  • 德国,拥有1亿1千多万个

IPv6目前渐渐流行起来,1995 年 12 月,IETF 发布了 RFC 1883,即IPv6规范,它一共有 128 位地址,这个数目简直就是太庞大了,2^128个,IPv4是2^32个,这个已经是43亿了,2^128个什么概念,不是有句笑话形容IPv6的地址数目的嘛,说给地球上每一粒沙子都分配一个IPv6的地址都分配不完,可想而知IPv6提供的地址数有多大。

3、传输层

传输层是TCP/IP 四层模型的第三层,又称为运输层,与 OSI 模型中传输层具有相似的功能和特性,主要负责数据在网络中传输时的可靠性、流量控制和校正。就跟发送一个有保险的包裹一样:传输层将数据分成数据包,确认它从发送者收到的数据包,并确保接收者确认它收到的数据包。

传输层涉及协议

传输层主要就涉及两种协议,可谓是家喻户晓:

  • TCP

  • UDP

TCP

TCP英文全称:Transmission Control Protocol,中文意思:传输控制协议,用于在 IP 之上确保数据包的可靠传输,是一种面向连接的协议。

在发送端,TCP 将整个消息分成更小的单元,称为,每个段包含一个序列号,该序列号是重新排序帧以形成原始消息所需的。

在接收端,TCP 收集所有段并根据序列号对它们重新排序。

TCP连接就是用传输中的三次握手进行连接的,三次握手之前瑞哥也有详细讲过,感兴趣的朋友可以去历史文章中翻一翻。

TCP三次握手简单来说就三步:

  • 第一步:客户端向服务端发送TCP SYN序列号启动连接

  • 第二步:服务端向客户端发送TCP ACK确认号(客户端的SYN值加1)和自己的序列号SYN回应

  • 第三步:客户端向服务端发送ACK确认号(服务端的SYN值加1)回应。

UDP

UDP英文全称:User Datagram Protocol,中文意思:用户数据报协议,是一种面向无连接的、不可靠的协议。

UDP没有握手过程,源 UDP 只是将每个数据报交给网络层的 IP,然后继续创建下一个数据报,目的 UDP 端口监听传入的数据报并将数据传递给应用层,UDP 无法恢复丢失的数据报。

4、应用层

应用层是TCP/IP 四层模型的第四层,TCP/IP中的应用层对应OSI模型中的会话层、表示层、应用层,即应用层 = 会话层 + 表示层 + 应用层

应用层主要提供用户和应用程序之间的接口。

应用层涉及协议

应用层涉及的协议很多,常见的比如:

  • HTTP/HTTPS:超文本传输协议

  • FTP:文件传输协议

  • SMTP:简单邮件传输协议

  • WS/WSS:Websocket

  • SSH:安全外壳

  • SNMP:简单网络管理协议

  • DNS:域名系统

  • DHCP:动态主机配置协议

很多很多,这里列举的只是我们经常遇到的。

下面我们稍微介绍一下这几个应用层的协议,这里我不做细节上的梳理,毕竟本文的重点事介绍TCP/IP模型,Websocket、DNS、DHCP之前瑞哥也有专门的文章介绍,感兴趣的朋友也可以去历史文章中翻一翻。

HTTP/HTTPS
  • HTTP 英文全称:Hypertext Transfer Protocol,中文名称:超文本传输协议

  • HTTPS 英文全称:Hyper Text Transfer Protocol Secure,中文名称:安全超文本传输协议

HTTP 提供了 Web 服务器和客户端(浏览器)之间的标准通信规则,使用的默认端口号为80

HTTPS是HTTP的安全版,使用 SSL 加密整个通信信息,使用的默认端口号为443

FTP

FTP英文全称:File Transfer Protocol,中文意思:文件传输协议,用于计算机之间传输文件,FTP是客户端-服务器协议,客户端会请求文件,本服务器会响应文件。

  • 控制连接使用端口 21

  • 传输数据使用端口 20

SMTP

SMTP英文全称:Simple Mail Transfer Protocol,中文意思:简单邮件传输协议,主要用于将电子邮件从电子邮件客户端发送到电子邮件服务器,以及将邮件消息从一个邮件服务器转发到另一个邮件服务器。

SMTP发邮件示意图

WS/WSS
  • WS英文全称:WebSocket

  • WSS英文全称:WebSocket Security

WS/WSS和HTTP/HTTPS很类似,一个是不安全的,一个是安全的,但是WS和HTTP本身是两个不同协议。

WebSocket用于 Web 浏览器和服务器之间建立持久、双向、全双工 TCP连接。

与TCP不同的是WebSocket握手后,通信通道将一直保持打开状态,可以进行连续的通信,服务器可以独立地向客户端发送数据,而无需客户端请求,如果服务器有新信息,也可以主动发送给客户端,而不需要客户端的任何特定请求,这就是WebSocket的强大之处。

WSS和HTTPS类似,是一种安全的WebSocket技术,信息都是经过加密的。

SSH

SSH英文全称:Secure Shell Protocol,中文意思:安全外壳协议,是一种远程管理协议,允许用户通过 Internet 访问、控制和修改远程服务器。

SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。

SNMP

SNMP英文全称:Simple Network Monitoring Protocol,中文名称:简单网络管理协议,是一组用于网络管理和监控的协议。

SNMP一共三个版本:

  • SNMPv1

  • SNMPv2

  • SNMPv3

DNS

DNS英文全称:Domain Name System,中文名称:域名系统

计算机通过使用IP 地址相互通信,IP 地址是一串数字,不太好记忆,DNS的作用就是将这些IP地址转换为容易记忆的域名。

DHCP

DHCP英文全称:Dynamic Host Control Protocol,中文名称:动态主机控制协议,是一种为网络设备自动提供 IP 地址的服务。

没有DHCP前,IP地址都是静态配置的,但是静态配置的方式不适用大型网络,假如有1万台、10万台设备,还是一台一台设备配置的话非常低效且容易发生错误,那么DHCP就是解决了这个痛点。

DHCP工作过程示意图

如图,DHCP过程一般分为四个过程:

  • Discover:客户端使用 UDP 端口 67 发送一个 Discover 广播消息,尝试联系网络上可用的任何 DHCP 服务器。

  • Offer:服务器使用 UDP 端口 68 响应 Offer 广播消息。

  • Request:当客户端选择了某个IP配置时,它会向DHCP服务器发送一个Request消息,通知指定的IP地址已经被选择。

  • Acknowledgment:服务器最后响应一个Acknowledgment消息,并将网络参数发送给客户端。

以上就是TCP/IP四层模型每一层的详细介绍,这里用这一张图来概括一下。

这张图从下往上分别是:

  1. 网络接口层

  2. 网络层

  3. 传输层

  4. 应用层

TCP/IP模型和OSI模型对比

在上一小节,我们也多少提到TCP/IP模型中网络接口层相当于是OSI的物理层、数据链路层的集合,应用层相当于OSI的应用层、表示层、会话层的集合,我们同样用一张图形象的表示一下:

总结

正如文章开头所说的那样,TCP/IP是互联网的基石,没有TCP/IP就没有我们现在庞大的互联网,在没有阅读本文之前,您可能觉得TCP/IP这么熟悉、这么简单的概念用得着花一篇长文来讲吗,看了本文我觉得,一篇文章都不够,一本书都能去讲,因为TCP/IP四层模型每一层涉及到的协议就非常多,我们还只是介绍了10几个比较常见的协议,真正意义上,TCP/IP协议包好几十个协议。

计算机网络协议

一. 简单理解

HTTP(超文本传输协议)

HTTP是用于获取HTML等资源的协议,它使用TCP协议作为底层的支撑协议,它是Web上任何数据交换的基础,是一种客户端-服务器协议。

使用场景:浏览器

「HTTP协议就像一个邮递员,负责把网页内容送到你的电脑上。」

HTTP/3

HTTP/3是HTTP的第三个版本,它使用QUIC作为底层的支撑协议,QUIC是一种为移动互联网使用而设计的新传输协议。它依赖于UDP而不是TCP,这使得网页响应速度更快,可以实现虚拟现实应用,用更多的带宽来渲染虚拟场景的复杂细节。

使用场景:物联网(IOT)、虚拟现实

「HTTP/3就像一个超级快递员,可以让网页变得更快。」

HTTPS(超文本传输协议安全版)

HTTPS是HTTP协议的安全版本,扩展了HTTP,并使用加密进行安全通信,主打一个「安全」。

使用场景:浏览器、网上银行、网上支付

「HTTPS就像一个保镖,可以保护你的信息安全。」

WebSocket

WebSocket是一种基于TCP协议的全双工通信协议,与传统的HTTP通信不同,WebSocket允许服务器主动向客户端推送数据,而不需要等待客户端的请求。

使用场景:实时聊天、视频会议、股票行情

「WebSocket就像一个实时对话的接线员,可以让你与网站实时交流信息。」

TCP(传输控制协议)

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是互联网的基础,用于在互联网上传输各种类型的数据,包括文本、图像、音频、视频等,许多应用层协议都建立在TCP之上。

使用场景:浏览器、文件传输、邮件

「TCP就像一个可靠的快递员,可以确保你的数据安全到达目的地。」

UDP(用户数据报协议)

UDP是一种面向无连接的、不可靠的、基于数据报的传输层通信协议。UDP是TCP的补充,UDP提高了数据传输的速度,但是可能会丢失某些数据,用于那些对可靠性要求不高的应用场景。

使用场景:视频流媒体、网络游戏、实时监控

「UDP就像一个粗心的快递员,他送包裹的速度很快,但是经常丢快递。」

SMTP(简单邮件传输协议)

SMTP是一个标准协议,是电子邮件传递的基础,用于在互联网上发送和接收电子邮件。

使用场景:电子邮件

「SMTP就像电子邮件的邮递员,负责把你的邮件送到朋友的邮箱。」

FTP(文件传输协议)

FTP是文件传输协议,用于在客户端和服务器之间传输计算机文件,FTP是文件传输的基础,用于在不同计算机之间共享文件。

使用场景:文件传输

「FTP就像一个文件的搬运工,他帮助你把文件从一台计算机传输到另一台计算机。」

参考链接:

GET和POST请求的区别(超详细)-CSDN博客

https://blog.csdn.net/qq_42931285/article/details/119852294

GET 和 POST 请求:理解它们之间的区别和适用场景-阿里云开发者社区 (aliyun.com)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值