一、知识点
网络传输:
基本原理是将数据分成多个数据包,每个数据包包含一定量的数据和一些元数据,如源地址、目标地址、校验和等。这些数据包通过网络中的路由器、交换机等设备进行传输,经过多个节点的转发和处理,最终到达目标节点。 因为在传输的过程中数据包会经历多条路径,所以也因此会有一些协议的产生来确保数据包被正确地传输 比如TCP协议、 UDP协议、HTTP协议。
二、梳理分析:
1. 数据包:
指将数据分割成多个小块进行传输的数据单元。每个数据包通常包括两部分数据:数据部分和元数据部分。
数据部分是指需要传输的实际数据,它可以是文本、图像、音频、视频等任何类型的数据。为了将数据分割成多个数据包进行传输,通常需要对数据进行分段处理,每个数据包只包含部分数据。
元数据部分是指描述数据包的一些信息,如源地址、目标地址、序列号、校验和等。其中,源地址和目标地址用于标识数据包的发送方和接收方,序列号用于标识数据包在传输过程中的顺序,校验和用于检测数据包在传输过程中是否出现错误。
在网络传输中,数据包通过路由器、交换机等网络设备进行传输。每个设备都会根据元数据部分对数据包进行处理,然后将其转发到下一个设备,直到最终到达目标节点。在传输过程中,数据包可能会经历多条路径,因此需要使用一些协议来确保数据包能够被正确地传输。
2.UDP协议
01.基本概念:
UDP(User Datagram Protocol)是一种传输层协议,它提供了无连接、不可靠的数据传输服务。与TCP协议不同,UDP协议不保证数据包的可靠传输,也不提供流量控制和拥塞控制等机制。
UDP协议的数据包通常被称为用户数据报(User Datagram),每个用户数据报包括两部分数据:数据部分和头部部分。
数据部分是指需要传输的实际数据,它可以是文本、图像、音频、视频等任何类型的数据。UDP协议不对数据进行分段处理,每个用户数据报可以包含完整的数据。
头部部分是指描述用户数据报的一些信息,如源端口号、目标端口号、长度、校验和等。其中,源端口号和目标端口号用于标识数据包的发送方和接收方,长度用于表示用户数据报的长度,校验和用于检测用户数据报在传输过程中是否出现错误。
UDP协议通常用于需要快速传输的应用,如音视频传输、游戏等。由于UDP协议不保证数据包的可靠传输,因此在使用UDP协议进行数据传输时,需要应用层自行处理丢包、重传等问题。
02.发包每次发多少?
在UDP协议中,应用层发包的大小没有固定限制,可以根据实际需求自由设置。每次发送的数据包大小取决于应用程序需要传输的数据量和网络带宽等因素。
通常情况下,UDP协议用于传输实时数据,如音视频流、游戏数据等。由于这些数据需要实时传输,因此每次发送的数据包大小通常比较小,一般不超过MTU(Maximum Transmission Unit)的大小。MTU是指网络传输中最大的数据包大小,它与网络设备的传输速率、传输介质等因素有关,通常为1500字节左右。
03.怎么避免分片?
为了避免IP分片,需要将发送的数据包大小限制在MTU以下,并可以采用路径MTU发现、使用TCP协议等方法来保证数据传输的可靠性和稳定性。
其方法具体表现:
-
调整数据包大小:将发送的数据包大小限制在MTU以下,可以有效避免IP分片。可以根据实际网络情况和应用需求,自行设置每次发送的数据包大小。
-
使用路径MTU发现(Path MTU Discovery):Path MTU Discovery是一种动态调整数据包大小的方法,它可以自动检测网络路径中的MTU,并根据MTU动态调整数据包大小。通过使用Path MTU Discovery,可以避免因网络MTU变化而导致的IP分片问题。
-
使用TCP协议:TCP协议可以自动将数据分割成多个小块进行传输,并在接收端重新组装成完整的数据。由于TCP协议具有流量控制和拥塞控制等机制,因此可以保证数据传输的可靠性和稳定性。
04 如何判断有没有丢包?
在判断数据包是否丢失时,需要使用一些网络诊断工具和技术,如ping命令、traceroute命令、网络监控工具等。通过对网络传输中的数据包进行监测和分析,可以及时发现故障并进行修复,保证网络传输的可靠性和稳定性。 以下是常用判断丢失的方法:
-
使用ping命令:ping命令可以向目标主机发送ICMP报文,并等待目标主机的响应。如果目标主机成功响应,则说明数据包没有丢失;如果没有响应,则说明数据包可能已经丢失。可以通过ping命令来测试网络连接的可靠性和稳定性。
-
使用traceroute命令:traceroute命令可以追踪数据包在网络中的路径,并显示每个路由器的IP地址和响应时间。如果在某个路由器上没有响应,则说明数据包可能已经丢失。可以通过traceroute命令来检测网络传输中的瓶颈和故障。
-
使用网络监控工具:网络监控工具可以实时监测网络传输中的数据包,包括丢包率、延迟等指标。如果发现丢包率较高,则说明数据包可能已经丢失。常用的网络监控工具包括Wireshark、tcpdump等。
3. TCP传输
01.基本概念:
在TCP协议中,数据传输过程包括建立连接、数据传输和断开连接三个阶段。通过使用可靠的传输机制和流量控制、拥塞控制等技术,TCP协议可以保证数据在传输过程中不会丢失、损坏或重复,从而保证了网络传输的可靠性和稳定性。
运行步骤:
-
建立连接:在进行数据传输之前,发送方和接收方需要先建立连接。TCP协议使用三次握手(Three-way Handshake)技术来建立连接。三次握手的过程是:发送方向接收方发送SYN报文段,接收方收到后回复一个SYN+ACK报文段,发送方再回复一个ACK报文段,此时连接建立成功。
-
数据传输:连接建立成功后,发送方可以向接收方发送数据。TCP协议将数据分割成多个小块进行传输,并在接收端重新组装成完整的数据。在传输过程中,TCP协议会对每个数据块进行编号,并使用确认机制来保证数据的可靠传输。
-
断开连接:在数据传输完成后,发送方和接收方需要断开连接。TCP协议使用四次挥手(Four-way Handshake)技术来断开连接。四次挥手的过程是:发送方向接收方发送一个FIN报文段,接收方收到后回复一个ACK报文段,然后再向发送方发送一个FIN报文段,发送方收到后回复一个ACK报文段,此时连接断开成功。
02.为什么会常出现TIME_WAIT
TIME_WAIT状态是TCP协议中的一种状态,用于等待对方发送ACK报文段确认断开连接。如果大量的TIME_WAIT状态连接堆积,就会影响系统性能和稳定性。为了避免TIME_WAIT状态连接堆积,可以通过调整TCP参数、重用端口号、减少连接频繁建立和断开等方式来优化系统设计
避免TIME_WAIT状态连接堆积,可以采取以下几种方法:
-
调整TCP参数:可以通过调整TCP参数来减少TIME_WAIT状态连接的持续时间。例如,可以将tcp_fin_timeout参数设置为较小的值,以缩短TIME_WAIT状态的持续时间。
-
重用端口号:可以通过设置SO_REUSEADDR选项来重用端口号,以缩短TIME_WAIT状态的持续时间。在重用端口号时,需要确保上一个连接已经完全关闭,并且不会再接收到任何数据包。
-
减少连接频繁建立和断开:可以通过优化应用程序的设计,减少TCP连接频繁建立和断开的情况。例如,可以采用连接池技术、长连接等方式来优化应用程序的设计。
4. HTTP协议
01.基本概念:
在Web应用中,HTTP协议是一种重要的通信协议,它通过建立连接、发送请求、接收响应等方式实现了客户端和服务器之间的通信。HTTP协议具有简单易用、无状态、可扩展性等特点,在Web开发中得到了广泛应用。
HTTP协议的工作流程通常包括以下几个步骤:
-
建立连接:客户端向服务器发送一个TCP连接请求,服务器收到请求后回复一个TCP连接响应,建立连接。
-
发送请求:客户端向服务器发送一个HTTP请求,请求中包含要访问的资源的URL、请求方法(如GET、POST等)、请求头等信息。
-
服务器响应:服务器收到请求后,根据请求中的信息返回一个HTTP响应。响应中包含状态码、响应头、响应正文等信息。
-
关闭连接:客户端收到响应后,可以选择继续发送请求或关闭连接。如果需要继续发送请求,则可以重复步骤2和3;如果不需要继续发送请求,则可以关闭连接。
HTTP协议的特点包括以下几个方面:
-
简单易用:HTTP协议的请求和响应格式简单明了,易于理解和使用。
-
无状态:HTTP协议是一种无状态协议,即服务器不会保存客户端的状态信息。每个请求都是独立的,服务器只会根据请求中的信息进行处理,并返回相应的响应。
-
可扩展性:HTTP协议支持扩展,可以通过添加新的请求方法、头部字段等方式来扩展协议的功能。
02.HTTP与TCP的区别
HTTP(Hypertext Transfer Protocol)和TCP(Transmission Control Protocol)是两种不同层次的协议,它们的作用和特点有所不同。
-
层次不同:HTTP协议是应用层协议,用于在Web浏览器和Web服务器之间传输数据;TCP协议是传输层协议,用于提供可靠的数据传输服务。
-
功能不同:HTTP协议主要负责数据的传输和交互,包括建立连接、发送请求、接收响应等;TCP协议主要负责数据的可靠传输,包括建立连接、流量控制、拥塞控制、重传机制等。
-
报文格式不同:HTTP协议的报文格式比较简单,包括请求报文和响应报文两种类型;TCP协议的报文格式较为复杂,包括数据段和控制段两种类型。
-
连接方式不同:HTTP协议是一种无状态协议,每个请求都是独立的,客户端和服务器之间的连接通常采用短连接方式;TCP协议是一种有状态协议,每个连接都需要经过三次握手建立,连接通常采用长连接方式。
三、个人思考
这次网络传输的学习让我对计算机网络基本原理有了初步了解:1.计算机网络是由多个互相连接的计算机组成的,其目的是为了实现数据的传输和共享。2.计算机网络分为不同的层次,每个层次都有自己的功能和协议。3.在网络传输中,数据是通过分组的方式进行传输的,每个分组都包含了源地址、目标地址、数据内容等信息。4.TCP协议是一种可靠的传输协议,主要负责数据的可靠传输,包括建立连接、流量控制、拥塞控制、重传机制等。5.HTTP协议是一种应用层协议,主要负责数据的传输和交互,包括建立连接、发送请求、接收响应等。
四、入门建议
理论课认真听老师讲课,把专业词汇理解,不懂再去社区搜搜相关资料