关于TCP、IP,HTTP、HTTPS的学习笔记(详细版)

一、HTTP(超文本传输协议)

HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和Web服务器之间传输数据的应用层协议。它是基于客户端-服务器模型的,客户端发起请求并接收服务器的响应。将其进行文字分割如下:超文本(Hypertext)、传输(Transfer)、协议(Protocol),其关系如下:

超文本主要包括文本、图片、视频等在传统文本语义上扩大的文本。

传输是由传输载体负责,把二进制数据包在两个终端之间进行传输,传输数据的一方叫做请求方,接收到的一方叫做应答方。 

HTTP的工作原理如下:

  1. 客户端发送请求:客户端(通常是Web浏览器)向服务器发送HTTP请求。请求包括请求行、请求头和请求体。请求行包含请求方法(GET、POST等)和请求的URL地址。请求头包含各种信息,如用户代理、内容类型等。请求体可选,用于传输数据。

  2. 服务器处理请求:服务器接收到请求后,根据请求的URL和其他相关信息,执行相应的操作。操作可能包括读取文件、查询数据库、生成动态内容等。

  3. 服务器发送响应:服务器生成HTTP响应,包括响应行、响应头和响应体。响应行包含响应的状态码(例如200表示成功,404表示未找到等)。响应头包含各种信息,如内容类型、缓存设置等。响应体包含要传输给客户端的实际数据。

  4. 客户端接收响应:客户端接收到服务器的响应后,根据响应的内容进行相应的处理。如果响应包含HTML代码,则浏览器会渲染页面显示。

HTTP协议的特点包括:

  • 简单:HTTP使用简单明了的文本格式进行通信,易于理解和调试。
  • 无连接:每个请求都是独立的,服务器不会保留关于客户端的任何状态信息。
  • 无状态:服务器不会记录之前的请求和响应,每个请求都是独立的,需要保持会话或状态的功能通过其他机制(如cookie)实现。
  • 可扩展:HTTP协议可以通过添加新的请求方法、头部字段等进行扩展。

除了常见的GET和POST请求方法外,HTTP还支持其他方法(如PUT、DELETE等)和许多头部字段(如Content-Type、Authorization等),以满足不同类型的请求和数据传输需求。

扫描二维码关注公众号,回复: 16499727 查看本文章

二、TCP(Transmission Control Protocol)协议介绍

TCP是一种面向连接的可靠传输协议,它在网络通信中扮演着重要的角色。以下是对TCP的详细介绍:

  1. 面向连接:TCP通过建立一个虚拟的连接来进行数据传输。在通信双方之间建立连接后,可以进行可靠的数据传输。

  2. 可靠性:TCP提供可靠的数据传输服务。它使用确认机制、序列号和校验和等技术来确保数据的完整性和准确性。如果发生数据丢失或错误,TCP会自动重传丢失的数据,并按正确的顺序重新组装数据。

  3. 流量控制:TCP使用滑动窗口机制来进行流量控制。接收方可以告知发送方自己的缓冲区大小,从而限制发送方发送的数据量,避免过载。

  4. 拥塞控制:TCP通过拥塞窗口机制来进行拥塞控制。它根据网络的拥塞程度调整发送速率,以避免网络拥塞并保持网络的稳定性。

  5. 面向字节流:TCP将数据分割为较小的报文段,并以字节流的形式进行传输。这意味着应用程序无需担心数据的分段和重组,因为TCP会自动处理这些细节。

  6. 可靠的握手和挥手:TCP使用三次握手来建立连接,确保双方都准备好发送和接收数据。在结束通信时,TCP使用四次挥手来关闭连接,并确保双方都能完整地传输所有数据。

  7. 端到端通信:TCP是一种端到端的协议,它负责将应用程序之间的数据传输从一端发送到另一端。它隐藏了底层网络的细节,使得应用程序可以专注于数据的传输和处理。                 

  8. 依赖关系:TCP依赖于IP进行数据包的传输,TCP将数据分割为报文段后,将其封装在IP数据包中,并通过IP协议进行传输。

  9. 协同工作:TCP和IP一起工作以实现可靠的数据传输。TCP负责数据的可靠性、有序性和流量控制等方面的处理,而IP负责将数据包从源主机路由到目的主机,处理网络间的数据包传递。

  10. 组成互联网协议族:TCP和IP是互联网协议族(TCP/IP)的两个核心协议,它们与其他协议组合使用,构成了互联网的基础通信架构。

 关于TCP的三次握手和四次握手:

SYN、ACK、SYN-ACK和FIN是TCP协议中的标志位或控制位,用于建立和关闭连接。它们分别表示以下含义:

  • SYN(Synchronize):SYN标志位用于发起连接请求的报文段,通常由客户端发送给服务器。当客户端希望与服务器建立连接时,它会发送一个带有SYN标志位的TCP报文段,表示请求建立连接。

  • ACK(Acknowledgment):ACK标志位表示确认,在TCP的握手过程中,当收到对方发来的SYN报文段后,回应的报文段会设置ACK标志位,并确认之前接收到的序列号。

  • SYN-ACK:SYN-ACK是指同时包含SYN和ACK标志位的报文段,用于响应连接请求。服务器在收到客户端的SYN报文段后,会回复一个带有SYN和ACK标志位的报文段,表示接受连接请求并确认同步。

  • FIN(Finish):FIN标志位用于关闭连接。当一方决定关闭连接时,会发送一个带有FIN标志位的报文段。接收方收到FIN后,确认接收并发送自己的FIN报文段作为回应,完成双向关闭。

这些标志位在TCP的三次握手和四次挥手过程中起着重要的作用。SYN和ACK配合使用,确保连接的建立和同步;而FIN用于关闭连接,通知对方停止数据传输。

TCP的连接建立过程(三次握手):

  1. 客户端发送一个带有SYN标志位的报文段,向服务器发起连接请求。
  2. 服务器收到请求后,回复一个带有SYN-ACK标志位的报文段,表示接受连接请求并确认同步。
  3. 客户端收到服务器的响应后,再发送一个带有ACK标志位的报文段,表示确认接收服务器的确认。至此,连接建立完成。

TCP的连接关闭过程(四次挥手):

  1. 一方发送一个带有FIN标志位的报文段,表示希望关闭连接。
  2. 接收方收到FIN后,发送一个带有ACK标志位的报文段,确认接收。
  3. 在数据传输完成后,接收方也发送一个带有FIN标志位的报文段,表示自己也希望关闭连接。
  4. 发送方收到FIN后,发送一个带有ACK标志位的报文段,确认接收,完成双向关闭。

三、UDP协议介绍

UDP(User Datagram Protocol)是一种无连接的传输协议,它提供了一种简单的、不可靠的数据传输服务。以下是对UDP的详细介绍:

  1. 无连接性:UDP是一种无连接的协议,通信双方在发送和接收数据之前不需要建立连接。这意味着UDP通信不保证数据的可靠性和顺序性,每个数据包都是独立地处理。

  2. 轻量级:相对于TCP协议,UDP协议非常轻量级。UDP头部只有8个字节,而TCP头部则有至少20个字节。因此,UDP在网络开销上更小,并且具有较低的延迟。

  3. 不可靠性:UDP不提供数据传输的可靠性保证。它不使用确认机制、重传机制或拥塞控制,也不保证数据的到达顺序。这使得UDP在一些实时应用中更为适用,如音频和视频流媒体等。

  4. 高效性:由于UDP没有复杂的机制来保证可靠性,它可以在最小的开销下进行快速的数据传输。这使得UDP在某些需要高效传输的场景中非常有用。

  5. 广播和多播支持:UDP支持广播和多播,可以将数据同时发送给多个目标主机。这对于实现一对多的实时通信,如在线游戏或视频会议等应用很有用。

  6. 无拥塞控制:UDP不具备拥塞控制机制,这意味着在网络拥塞时,UDP传输可能会导致丢包或延迟增加。但与此同时,UDP的不可靠性使其更适合某些场景,例如传感器数据传输,其中实时性优先于可靠性。

UDP(User Datagram Protocol)和IP(Internet Protocol)是互联网协议族中的两个关键组成部分,它们密切相关并共同工作以实现数据传输。

  1. 报文封装:UDP使用IP协议进行数据包的封装和传输。在发送端,UDP将应用程序的数据封装到UDP报文段中;然后,UDP将报文段添加到IP数据包中,同时添加源IP地址和目的IP地址等必要的IP头部信息。最后,IP层将整个IP数据包发送到网络中。

  2. IP地址定位:UDP依赖IP协议来寻址和定位接收方。每个主机都有一个唯一的IP地址,UDP使用这些地址来确定发送数据的目标主机,并将数据包传送到正确的目的地。

  3. 协议层次:UDP位于传输层,而IP位于网络层。UDP负责提供简单的、无连接的数据传输服务,处理数据报的分割与重组;而IP负责将数据包从源主机路由到目的主机,处理网络间的数据包传递、路由选择和 addressing 等问题。

  4. 互补关系:UDP与IP互为补充,UDP提供了数据传输的协议头部信息,如源端口号和目的端口号等,以标识应用程序之间的通信;而IP负责提供底层的路由和寻址功能,确保数据包能够正确到达目标主机。

HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是用于在网络上传输数据的协议。下面对它们进行详细介绍:

HTTP:

  1. 不加密传输:HTTP是一种无状态的协议,用于在客户端和服务器之间传输超文本数据。它使用明文传输数据,不提供加密保护,因此容易受到中间人攻击或数据篡改的风险。

  2. 默认端口为80:HTTP默认使用TCP协议的80端口进行通信。

  3. 无连接性:每次请求都是独立的,即客户端发送请求并等待响应后,连接就会关闭。这意味着服务器无法记住之前的请求。

  4. 明文传输:HTTP的数据传输是明文的,包括URL、请求头部和响应内容等。这使得数据的机密性受到威胁,如用户登录信息或敏感数据可能被窃取。

HTTPS:

  1. 加密传输:HTTPS是通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议,对HTTP进行安全加密的协议。它使用加密算法来保护数据的机密性,防止数据被窃听或篡改。

  2. 默认端口为443:HTTPS默认使用TCP协议的443端口进行通信。

  3. 安全验证:HTTPS使用数字证书来验证服务器的身份。这确保了客户端与服务器之间的通信是受信任的,并防止中间人攻击。

  4. 可信任的连接:HTTPS通过使用SSL/TLS协议建立一个安全的加密隧道,对数据进行加密和解密。这使得数据在传输过程中免受窃听和数据篡改的风险。

  5. 性能影响:由于加密和解密的过程需要计算资源,HTTPS相对于HTTP会增加一些额外的性能开销。但是,随着硬件和协议的不断改进,这种差距正在减小。

猜你喜欢

转载自blog.csdn.net/weixin_44979308/article/details/131549187