1.UDP(即用户数据报协议)

UDP是一种无连接的传输层协议,提供简单的、不可靠的数据传输服务。它不保证数据包的顺序、可靠性或重复性,但具有低延迟和高效率的特点。

UDP协议段格式

  • 16位UDP⻓度,表⽰整个数据报(UDP⾸部+UDP数据)的最⼤⻓度,也就是64kb可是现在的互联网中已经不够用了
  • 如果校验和出错,就会直接丢弃

理解UDP的不可靠(即传输控制协议)

UDP 的不可靠体现在它无法保证数据能 “完整、有序、不重复” 地到达接收方,且出现问题时不会主动处理或通知。

  1. 无连接:跳过 “通信准备” 环节,发送方无需向接受方发起连接,直接进行传输
  2. 无确认与重传机制:“发完即忘”,接收方未确认收到,可能数据丢失发送法也不知道也不会进行重传
  3. 无序传输:不保证数据顺序,没有序号标记,数据报可能通过不同的路径进行传输,接受方获取乱序的数据
  4.  无去重机制:可能收到重复数据,可能因为网络问题导致接收方重复接受数据报
  5. 可选的校验和:对数据损坏的处理有限,UDP的校验和是可选的,如果出错会直接丢弃
  6. 无流量控制与拥塞控制:“不管网络死活”,若大量数据包发送造成网络堵塞可能数据报会发生丢弃

2.TCP

TCP(Transmission Control Protocol)是传输层协议,提供面向连接、可靠的数据传输服务。

TCP协议段格式

TCP 头部字段详解

源/目的端口号

  • 表示数据从哪个进程发送,到哪个进程接收。端口号用于标识主机上的具体应用进程。

32位序号/32位确认号

  • 序号用于标识数据包的顺序,确保数据按序传输。
  • 确认号用于确认接收到的数据,表示期望接收的下一个字节序号。

4位TCP报头长度

  • 表示TCP头部包含的32位字的数量。
  • 头部最大长度为15 × 4 = 60字节(因为4位最大值为15)。

6位标志位

  • URG:紧急指针是否有效。若为1,表示紧急数据需要优先处理。
  • ACK:确认号是否有效。若为1,表示确认号字段有意义。
  • PSH:提示接收端应用程序立即从TCP缓冲区读取数据。
  • RST:表示要求重新建立连接。携带RST标志的报文称为复位报文段。
  • SYN:请求建立连接。携带SYN标志的报文称为同步报文段。
  • FIN:通知对方本端要关闭连接。携带FIN标志的报文称为结束报文段。

16位窗口大小

  • 表示接收端的接收缓冲区剩余空间大小,用于流量控制。

16位校验和

  • 由发送端填充,采用CRC校验算法。
  • 校验范围包括TCP头部和数据部分。接收端校验失败则丢弃数据。

16位紧急指针

  • 当URG标志为1时有效,指向紧急数据的末尾位置。

40字节头部选项(可选字段)

  • 用于扩展TCP功能,如最大报文段长度(MSS)、窗口缩放因子等。

TCP的可靠

确认应答

在上述我们说过UDP的不可靠而TCP却恰恰相反。

每⼀个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下⼀次你从哪⾥开始发送

超时重传

  • 主机A发送数据给B之后,可能因为⽹络拥堵等原因,数据⽆法到达主机B
  • 如果主机A在⼀个特定时间间隔内没有收到B发来的确认应答,就会进⾏重发; 但是,主机A未收到B发来的确认应答,也可能是因为ACK丢失了

因此主机B会收到很多重复数据.那么TCP协议需要能够识别出那些包是重复的包,并且把重复的丢弃掉

超时的时间如何确定?

最理想的情况下找个最小的时间,但是网络通信的复杂程度哪有这么容易获取呢,时间太长影响效率,时间太短重复发送。因此TCP为了保证⽆论在任何环境下都能⽐较⾼性能的通信,因此会动态计算这个最⼤超时时间。

  • 超时以500ms为⼀个单位进⾏控制,每次判定超时重发的 超时时间都是500ms的整数倍.
  • 如果重发⼀次之后,仍然得不到应答,等待2*500ms后再进⾏重传.
  • 如果仍然得不到应答,等待4*500ms进⾏重传.依次类推,以指数形式递增.
  • 累计到⼀定的重传次数,TCP认为⽹络或者对端主机出现异常,强制关闭连接

连接管理

在正常情况下,TCP要经过三次握⼿建⽴连接,四次挥⼿断开连接

  • CLOSED:初始 “关闭” 状态,连接未建立或已完全关闭,无任何连接相关资源占用。
  • LISTEN(仅服务器):服务器调用 listen() 后进入,处于 “监听” 状态,等待客户端发起连接请求。
  • SYN_SENT(仅客户端):客户端调用 connect() 发送 SYN(同步连接请求)后进入,等待服务器响应 SYN+ACK
  • SYN_RCVD(仅服务器):服务器收到客户端 SYN 后进入,已准备好响应 SYN+ACK,等待客户端最终 ACK
  • ESTABLISHED(客户端 + 服务器):三次握手完成后进入,连接 “已建立” 状态,双方可正常收发数据。
  • FIN_WAIT_1(仅客户端):客户端主动调用 close() 发送 FIN(结束连接请求)后进入,等待服务器 ACK
  • FIN_WAIT_2(仅客户端):客户端收到服务器对 FIN 的 ACK 后进入,等待服务器发起 FIN 关闭请求。
  • CLOSE_WAIT(仅服务器):服务器收到客户端 FIN 后进入,需处理自身关闭逻辑(如收尾数据),准备主动发 FIN
  • LAST_ACK(仅服务器):服务器发送 FIN 后进入,等待客户端最终 ACK 确认关闭。
  • TIME_WAIT(仅客户端):客户端发送对服务器 FIN 的 ACK 后进入,需等待超时(避免报文丢失导致连接残留),超时后彻底关闭。
TCP 三次握手(建立连接)

三次握手的目的是同步通信双方的序列号,并确认彼此的接收和发送能力,最终建立可靠的连接。

过程详解

  1. 第一次握手(客户端 → 服务器)

    • 客户端向服务器发送 SYN(同步)报文,请求建立连接。
    • 报文包含:客户端的初始序列号(seq = x),表示后续数据将从 x+1 开始发送。
  2. 第二次握手(服务器 → 客户端)

    • 服务器收到 SYN 后,同意建立连接,回复 SYN+ACK(同步 + 确认)报文
    • 报文包含:
      • 服务器的初始序列号(seq = y);
      • 确认号(ack = x+1),表示已收到客户端的 x 序号,期待下一个数据从 x+1 开始。
  3. 第三次握手(客户端 → 服务器)

    • 客户端收到 SYN+ACK 后,发送 ACK(确认)报文
    • 报文包含:确认号(ack = y+1),表示已收到服务器的 y 序号,期待下一个数据从 y+1 开始。
    • 服务器收到 ACK 后,连接正式建立,双方开始传输数据。

其实这里就像两个人通电话:

  • 甲打给乙:喂,你能听到吗?(甲发起连接请求)
  • 乙回应:能听到!你能听到我吗?(乙确认收到,同时反问甲)
  • 甲回答:能听到!那我们开始说吧。”(甲确认收到乙的回应)
TCP 四次挥手(终止连接)

过程详解:

假设客户端先主动关闭连接

  1. 第一次挥手(客户端 → 服务器)

    • 客户端发送 FIN(结束)报文,表示 “我不再发送数据了”。
    • 报文包含:客户端当前序列号(seq = u)。
  2. 第二次挥手(服务器 → 客户端)

    • 服务器收到 FIN 后,回复 ACK 报文,确认 “已收到关闭请求”。
    • 报文包含:确认号(ack = u+1),服务器自身序列号(seq = v)。
    • 此时,客户端到服务器的方向连接关闭,但服务器仍可向客户端发送数据(半关闭状态)。
  3. 第三次挥手(服务器 → 客户端)

    • 服务器发送完所有数据后,也发送 FIN 报文,表示 “我也不再发送数据了”。
    • 报文包含:服务器当前序列号(seq = ww 可能大于 v,因期间可能发送了数据),确认号(ack = u+1)。
  4. 第四次挥手(客户端 → 服务器)

    • 客户端收到 FIN 后,回复 ACK 报文,确认 “已收到服务器的关闭请求”。
    • 报文包含:确认号(ack = w+1),客户端自身序列号(seq = u+1)。
    • 服务器收到 ACK 后,关闭连接;客户端需等待一段时间(2MSL,确保服务器收到 ACK)后关闭连接。

这里就像有一方想挂电话的场景:

  • 甲说:我说完了,要挂了哦。(甲请求关闭连接)
  • 乙回应:好,知道你要挂了,我这边还有点话没说完。(乙确认收到,但没准备好)
  • 乙补完话说:我也说完了,你可以挂了。(乙准备好关闭)
  • 甲回应:好,那挂了。(甲确认,最终断开)

滑动窗⼝

窗⼝⼤⼩指的是⽆需等待确认应答⽽可以继续发送数据的最⼤值.上图的窗⼝⼤⼩就是4000个字节,收到第一个ASK的时候继续发送以此类推。这样的话同时也伴随着问题。

情况⼀:数据包已经抵达,ACK被丢了

这种情况下,部分ACK丢了并不要紧,因为可以通过后续的ACK进⾏确认;

情况⼆:数据包就直接丢了

当中间有一段数据段丢失了,接收方就会一直1001ACK重复应答,接收方就收到重复的1001ACK的确认应答,则进行重发,再次收到就是7001ACK,因为之前已经发送过了只是因为丢失进入了接收缓冲区

流量控制

接收端处理数据的速度是有限的.如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送 端继续发送,就会造成丢包,继⽽引起丢包重传等等⼀系列连锁反应.

因此TCP⽀持根据接收端的处理能⼒,来决定发送端的发送速度.这个机制就叫做流量控制

接收端将⾃⼰可以接收的缓冲区⼤⼩放⼊TCP⾸部中的"窗⼝⼤⼩"字段,通过ACK端通知发送端;

这里的缓冲区可以看出一杯水,满了就不能再加了,需要喝水,取决于你喝多少水,我就加多少水。

  • 窗⼝⼤⼩字段越⼤,说明⽹络的吞吐量越⾼;
  • 接收端⼀旦发现⾃⼰的缓冲区快满了,就会将窗⼝⼤⼩设置成⼀个更⼩的值通知给发送端; 
  • 发送端接受到这个窗⼝之后,就会减慢⾃⼰的发送速度;
  • 如果接收端缓冲区满了,就会将窗⼝置为0;这时发送⽅不再发送数据,但是需要定期发送⼀个窗⼝探 测数据段,使接收端把窗⼝⼤⼩告诉发送端.

拥塞控制

虽然TCP有了滑动窗⼝这个⼤杀器,能够⾼效可靠的发送⼤量的数据.但是如果在刚开始阶段就发送⼤量 的数据,仍然可能引发问题.

因为⽹络上有很多的计算机,可能当前的⽹络状态就已经⽐较拥堵.在不清楚当前⽹络状态下,贸然发送 ⼤量的数据,是很有可能引起雪上加霜的.

TCP引⼊慢启动机制,先发少量的数据,探探路,摸清当前的⽹络拥堵状态,再决定按照多⼤的速度传输 数据;

  • 此处引⼊⼀个概念程为拥塞窗⼝ 
  • 发送开始的时候,定义拥塞窗⼝⼤⼩为1
  • 每次收到⼀个ACK应答,拥塞窗⼝加1
  • 每次发送数据包的时候,将拥塞窗⼝和接收端主机反馈的窗⼝⼤⼩做⽐较,取较⼩的值作为实际发送 的窗⼝

像上⾯这样的拥塞窗⼝增⻓速度,是指数级别的."慢启动"只是指初使时慢,但是增⻓速度⾮常快,为了不增⻓的那么快,因此不能使拥塞窗⼝单纯的加倍

  • 此处引⼊⼀个叫做慢启动的阈值
  • 当拥塞窗⼝超过这个阈值的时候,不再按照指数⽅式增⻓,⽽是按照线性⽅式增⻓
  • 当TCP开始启动的时候,慢启动阈值等于窗⼝最⼤值
  • 在每次超时重发的时候,慢启动阈值会变成原来的⼀半,同时拥塞窗⼝置回1

延迟应答

指接收方收到数据后,不立即返回确认(ACK)报文,而是短暂延迟一段时间(通常不超过 500ms),等待是否有其他数据或控制信息可以与 ACK “合并” 发送(例如结合捎带应答机制),从而减少网络中单独 ACK 报文的数量,降低带宽消耗。

  • 假设接收端缓冲区为1M.⼀次收到了500K的数据;如果⽴刻应答,返回的窗⼝就是500K;
  • 但实际上可能处理端处理的速度很快,10ms之内就把500K数据从缓冲区消费掉了;
  • 在这种情况下,接收端处理还远没有达到⾃⼰的极限,即使窗⼝再放⼤⼀些,也能处理过来;
  •  如果接收端稍微等⼀会再应答,⽐如等待200ms再应答,那么这个时候返回的窗⼝⼤⼩就是1M;
延迟应答的限制

数量限制:每隔N个包就应答⼀次;

时间限制:超过最⼤延迟时间就应答⼀次;

具体的数量和超时时间,依操作系统不同也有差异;⼀般N取2,超时时间取200ms

捎带应答

指发送方在向接收方传输数据报文时,顺便将对之前已接收数据的确认(ACK)信息 “捎带” 在该数据报文中,而非单独发送一个 ACK 报文。这一机制的核心目的是减少网络中报文的数量,降低带宽消耗,提高通信效率

⾯向字节流

  • 创建⼀个TCP的socket,同时在内核中创建⼀个发送缓冲区和⼀个接收缓冲区
  • 调⽤write时,数据会先写⼊发送缓冲区中; 
  • 如果发送的字节数太⻓,会被拆分成多个TCP的数据包发出;
  •  如果发送的字节数太短,就会先在缓冲区⾥等待,等到缓冲区⻓度差不多了,或者其他合适的时机发 送出去;
  • 接收数据的时候,数据也是从⽹卡驱动程序到达内核的接收缓冲区;
  • 然后应⽤程序可以调⽤read从接收缓冲区拿数据;
  • 另⼀⽅⾯,TCP的⼀个连接,既有发送缓冲区,也有接收缓冲区,那么对于这⼀个连接,既可以读数据, 也可以写数据.这个概念叫做全双⼯

粘包问题

是 “面向字节流” 特性带来的典型现象 —— 接收方无法直接区分应用层发送的多个消息边界,导致多个消息被 “粘” 在一起接收,或一个消息被拆分成多个部分接收。

为什么会出现粘包?
  1. 发送方的缓冲与合并
    发送方 TCP 为提高效率,会将应用层多次发送的小数据合并成一个大报文发送(Nagle 算法)。例如:应用层连续发送 "A""B""C" 三个小消息,TCP 可能将它们合并为一个报文发送,接收方一次收到 "ABC",无法区分清原始的三个消息。

  2. 接收方的缓冲与拆分
    接收方 TCP 会将收到的数据先放入缓冲区,再按需交付给应用层。如果缓冲区中的数据未被应用层及时读取,新到的数据会继续存入缓冲区,导致多个消息被 “粘” 在缓冲区中。

  3. 网络分段的不确定性
    TCP 可能根据网络 MTU(最大传输单元)将大消息拆分成多个小报文传输,接收方可能分多次收到这些分段,导致一个完整消息被拆分接收。

粘包的表现形式
  1. 多包合一:多个消息被合并成一个报文接收。

  2. 一包拆分:一个消息被拆分成多个报文接收。

  3. 混合形式:部分消息合并,部分拆分。

如何解决粘包问题?
  1. 固定长度
    约定每个消息的字节数固定(如 100 字节)。接收方每次读取固定长度的数据,不足时等待补全。
    缺点:不适合长度多变的消息,可能浪费带宽。

  2. 分隔符
    在消息末尾添加特殊分隔符(如 \r\n| 等,需确保分隔符不会出现在消息内容中)。接收方通过分隔符拆分消息。
    例:HTTP 协议用 \r\n 分隔请求头字段。

  3. 长度前缀
    在消息头部添加固定长度的 “长度字段”,说明后续消息正文的字节数。接收方先读长度字段,再按长度读取对应字节数的正文。
    例:二进制协议常用 4 字节整数表示消息长度

异常情况

  • 进程终⽌:进程终⽌会释放⽂件描述符,仍然可以发送FIN.和正常关闭没有什么区别.
  • 机器重启:和进程终⽌的情况相同.
  • 机器掉电/⽹线断开:接收端认为连接还在,⼀旦接收端有写⼊操作,接收端发现连接已经不在了,就 会进⾏reset.即使没有写⼊操作,TCP⾃⼰也内置了⼀个保活定时器,会定期询问对⽅是否还在.如果 对⽅不在,也会把连接释放.

3.TCP/UDP对⽐

特性TCP协议UDP协议
连接性面向连接(需三次握手建立连接,四次挥手关闭连接)无连接(直接发送数据,无需建立/关闭连接)
可靠性提供可靠传输(保证数据不丢失、不重复、按序到达)不可靠传输(不保证数据到达,可能丢失、乱序)
数据边界面向字节流(无消息边界,可能出现粘包)面向报文(保留消息边界,不合并、不拆分)
拥塞控制与流量控制有(通过滑动窗口、拥塞窗口等机制动态调整发送速率)无(发送速率不受控制,可能导致网络拥塞)
首部开销较大(固定首部20字节,可选扩展字段)较小(固定首部8字节)
适用场景对可靠性要求高的场景(文件传输、网页加载、邮件等)对实时性要求高的场景(视频通话、游戏、广播等)

4.IP

  • 主机:配有IP地址,但是不进⾏路由控制的设备;
  •  路由器:即配有IP地址,⼜能进⾏路由控制; 
  • 节点:主机和路由器的统称;

协议头格式

  • 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4
  • 4位头部⻓度(headerlength):IP头部的⻓度是多少个32bit,也就是length*4的字节数.4bit表⽰最 ⼤的数字是15,因此IP头部最⼤⻓度是60字节
  • 8位服务类型(TypeOfService):3位优先权字段(已经弃⽤),4位TOS字段,和1位保留字段(必须置为 0). 4位TOS分别表⽰:最⼩延时,最⼤吞吐量,最⾼可靠性,最⼩成本.这四者相互冲突,只能选择⼀个. 对于ssh/telnet这样的应⽤程序,最⼩延时⽐较重要;对于ftp这样的程序,最⼤吞吐量⽐较重要
  • 16位总⻓度(totallength):IP数据报整体占多少个字节
  • 16位标识(id):唯⼀的标识主机发送的报⽂.如果IP报⽂在数据链路层被分⽚了,那么每⼀个⽚⾥⾯的 这个id都是相同的
  • 3位标志字段:第⼀位保留(保留的意思是现在不⽤,但是还没想好说不定以后要⽤到).第⼆位置为1表 ⽰禁⽌分⽚,这时候如果报⽂⻓度超过MTU,IP模块就会丢弃报⽂.第三位表⽰"更多分⽚",如果分⽚ 了的话,最后⼀个分⽚置为1,其他是0.类似于⼀个结束标记.
  • 13位分⽚偏移(framegamentoffset):是分⽚相对于原始IP报⽂开始处的偏移.其实就是在表⽰当前 分⽚在原报⽂中处在哪个位置.实际偏移的字节数是这个值*8得到的.因此,除了最后⼀个报⽂之 外,其他报⽂的⻓度必须是8的整数倍(否则报⽂就不连续了)
  • 8位⽣存时间(TimeToLive,TTL):数据报到达⽬的地的最⼤报⽂跳数.⼀般是64.每次经过⼀个路 由,TTL-=1,⼀直减到0还没到达,那么就丢弃了.这个字段主要是⽤来防⽌出现路由循环 比特就业课 
  • 8位协议:表⽰上层协议的类型
  • 16位头部校验和:使⽤CRC进⾏校验,来鉴别头部是否损坏
  • 32位源地址和32位⽬标地址:表⽰发送端和接收端

地址管理

  • ⽹络号:保证相互连接的两个⽹段具有不同的标识
  • 主机号:同⼀⽹段内,主机之间具有相同的⽹络号,但是必须有不同的主机号

  • 同一个局域网中不同设备网络号必须相同,主机号必须不同
  • 相邻局域网中不同设备网络号必须不同,主机号无限制
IP不够用了怎么办

NAT(网络地址转换)

  • 原理:在局域网(如家庭、企业内网)中使用私有 IPv4 地址(如192.168.x.x10.x.x.x),仅通过 1-2 个公网 IPv4 地址接入互联网。NAT 设备(如家用路由器)负责在私有地址与公网地址之间转换,实现多设备共享一个公网 IP。
  • 作用:极大减少对公网 IPv4 地址的消耗(一个公网 IP 可支持数十甚至上百台设备),是目前最广泛使用的短期解决方案。

CIDR(动态分配IP地址)

  • 原理:取消传统的 A/B/C 类地址划分,通过 “网络前缀 + 子网掩码” 灵活划分网段(如将多个小网段合并为大网段),减少地址浪费。
  • 作用:提高 IPv4 地址的分配效率,避免早期地址划分导致的大量闲置。

IPv6

  • 地址空间巨大:IPv6 地址长度为 128 位,总地址数约 3.4×10³⁸个.
特殊的IP地址
  • 将IP地址中的主机地址全部设为0,就成为了⽹络号,代表这个局域⽹;
  • 将IP地址中的主机地址全部设为1,就成为了⼴播地址,⽤于给同⼀个链路中相互连接的所有主机发 送数据包;
  • 127.*的IP地址⽤于本机环回(loopback)测试,通常是127.0.0.1

路由选择

在复杂的⽹络结构中,找出⼀条通往终点的路线,路由的过程,是⼀跳⼀跳"问路"的过程

5. 数据链路层

认识以太⽹

以太网(Ethernet)是一种局域网(LAN)技术标准,用于在短距离内通过有线或光纤连接设备,实现数据通信。它由IEEE 802.3标准定义,广泛应用于家庭、企业及数据中心网络。

以太网的核心特性

  • 传输介质:支持双绞线(如Cat5e、Cat6)、同轴电缆或光纤
  • 拓扑结构:早期采用总线型拓扑,现代以太网多为星型拓扑(通过交换机连接)
  • 数据速率:从最初的10 Mbps发展到现在的400 Gbps
  • MAC协议:使用CSMA/CD(载波监听多路访问/冲突检测)机制管理数据帧传输

以太⽹帧格式

  • 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址),⻓度是48位,是在⽹卡出⼚时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码

认识MAC

  • MAC地址⽤来识别数据链路层中相连的节点;
  • ⻓度为48位,及6个字节.⼀般⽤16进制数字加上冒号的形式来表⽰(例如:08:00:27:03:fb:19)
  • 在⽹卡出⼚时就确定了,不能修改.mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地 址,可能会冲突;也有些⽹卡⽀持⽤⼾配置mac地址)
  • IP地址描述的是路途总体的起点和终点,MAC地址描述的是路途上的每⼀个区间的起点和终点

认识MTU

MTU(Maximum Transmission Unit,最大传输单元)指网络通信中单次传输数据包的最大尺寸,单位为字节(Bytes)。不同网络协议或物理介质对 MTU 有不同限制,超过 MTU 的数据包会被分片(Fragmentation)或丢弃。

  • 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补填 充位;
  • 最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU;
  •  如果⼀个数据包从以太⽹路由到拨号链路上,数据包⻓度⼤于拨号链路的MTU了,则需要对数据包进 ⾏分⽚(fragmentation);
  • 不同的数据链路层标准的MTU是不同的

ARP协议

ARP不是⼀个单纯的数据链路层的协议,⽽是⼀个介于数据链路层和⽹络层之间的协议;

ARP协议的作⽤

ARP协议建⽴了主机IP地址和MAC地址的映射关系.

  • 在⽹络通讯时,源主机的应⽤程序知道⽬的主机的IP地址和端⼝号,却不知道⽬的主机的硬件地址;
  • 数据包⾸先是被⽹卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直 接丢弃;
  • 因此在通讯前必须获得⽬的主机的硬件地址

6.DNS(DomainNameSystem)

TCP/IP中使⽤IP地址和端⼝号来确定⽹络上的⼀台主机的⼀个程序.但是IP地址不⽅便记忆.于是人们将可读的域名(是⼀个字符串,并且使⽤hosts⽂件来描述主机名和IP地址的关系)转换为可识别的IP地址。

如何每次访问都需要先访问DNS服务器的海量的数据不会挂吗?又该如何解决

  • 缓存:电脑会保存你第一次访的DNS下次访问的时候就可以之间使用
  • DNS服务器不止一个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94017.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94017.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/94017.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub Actions YAML命令使用指南

version: 2 updates:- package-ecosystem: "github-actions"directory: "/"schedule:interval: "weekly"这段代码是 Dependabot 的配置文件(通常放在 .github/dependabot.yml 中),它的作用是 自动化管理 GitHu…

决策树算法学习总结

一、经典决策树算法原理 (一)ID3 算法 核心思想:以 “信息增益” 作为划分属性的选择标准,通过最大化信息增益来提升数据集的 “纯度”。 关键概念 —— 信息增益:指某个属性带来的 “熵减”(即纯度提升量&…

内网安全——出网协议端口探测

在实战中难免会遇到各种各样的情况,其中对于目标主机是否出网这是一个十分值得收集的信息,因为完全不出网你就获取不到主机了 端口 Linux 系统 对于 Linux 系统,探测其允许出网的端口,这里使用的是 Linux 的自带命令,所…

C#WPF实战出真汁13--【营业查询】

1、营业查询介绍本模块是最后一个模块,该板块需要的功能有:营业数据列表,查询数据,导出数据,数据统计。2、UI设计布局TabControl 是 WPF 中用于创建多页标签式界面的控件,常用于组织多个子内容区域。每个子…

基于 Java 和 MySQL 的精品课程网站

基于 Java 和 MySQL 的精品课程网站设计与实现一、 毕业设计(论文)任务书摘要:近年来,教育信息化发展十分迅猛,人们的教育观念、教育手段、学习方法、学习渠道等等都发生了重大的变化。知识性人才也已经日益成为了一个…

全球首款 8K 全景无人机影翎 A1 发布解读:航拍进入“先飞行后取景”时代

全球首款 8K 全景无人机影翎 A1 发布解读:航拍进入“先飞行后取景”时代 特别说明:本文所有图片素材来源于影翎官网 影翎官方介绍称:“全球首款”是指截至 2025 年,A1 是首台全面整合的全景无人机:无需外挂全景相机配件…

androidstudio内存大小配置

help->Edit Custom Vm option-Xmx8096m或者其他数值 改成-Xmx10240m然后设置里面的内存大小也要修改一下

vue3和elementPlus中的el-dropdown-menu中的背景样式修改

1. 效果展示2. 代码展示在el-dropdown-menu下加载类名,class"my-dropdown-menu"<el-dropdown-menu class"my-dropdown-menu"><el-dropdown-item :command"{ action: upgrade, data }">升级</el-dropdown-item><el-dropdown…

计算机网络--HTTP协议

1. 什么是 HTTP 协议全称&#xff1a;Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;作用&#xff1a;用于在服务器与客户端&#xff08;通常是浏览器&#xff09;之间传输超文本数据&#xff08;如文字、图片、视频、音频&#xff09;的应用层协议。工作…

Bee1.17.25更新Bug,完善功能.不支持NOSQL,分库分表Sharding(2.X版有)

Bee 1.17.25 正常的ORM功能都有,但不支持NOSQL, 分库分表Sharding; 若需要可使用2.X版. Bee, 接口简单&#xff0c;功能齐全&#xff0c;性能好&#xff0c;支持原生分页性能更高&#xff1b;还有分库分表 (Sharding 分片) 功能&#xff0c;也支持 MongoDB ORM. Bee Hiberna…

RAG流程全解析:从数据到精准答案

Rag流程分析第一部分&#xff1a;数据处理与向量化 原始文档进入系统&#xff0c;先经过格式识别&#xff0c;把 pdf、docx、pptx、扫描图片等统一转成文字流。文字流丢进分段器&#xff0c;按固定长度或语义边界切成若干文本块&#xff0c;每个块再生成唯一 id。如果文档里有表…

Matplotlib数据可视化实战:Matplotlib图表注释与美化入门

图表注释与标签&#xff1a;提升数据可视化效果 学习目标 通过本课程的学习&#xff0c;学员将掌握如何使用Matplotlib在图表中添加文本注释、图例、标题和轴标签&#xff0c;从而提高图表的可读性和信息传达能力。本课程将通过实际案例&#xff0c;帮助学员理解每个元素的作用…

GitLab 安全漏洞 CVE-2025-7739 解决方案

本分分享极狐GitLab 补丁版本 18.2.2, 18.1.4, 18.0.6 的详细内容。这几个版本包含重要的缺陷和安全修复代码&#xff0c;我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS&#xff0c;技术团队已经进行了升级&#xff0c;无需用户采取任何…

C端高并发项目都有哪些

C端&#xff08;用户端&#xff09;高并发项目通常涉及大规模用户直接访问的服务&#xff0c;其核心挑战是如何在海量用户同时请求下&#xff0c;保证系统的稳定性、高性能、高可用和一致性。以下是一些典型的C端高并发项目类型和具体案例&#xff1a;​核心类型与典型案例&…

OSCP - Proving Grounds - Shenzi

主要知识点 路径爆破小技巧 windows AlwaysInstallElevated 提权 具体步骤 依旧是nmap开始&#xff0c;其中80/443/139/445端口值得关注一下 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-01 15:06 UTC Nmap scan report for 192.168.53.55 Host is up (0.0008…

结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))

技术手段&#xff1a; BI工具&#xff08;finereport &#xff09;、python、sql 数据更新&#xff1a; 每日零点更新数据。&#xff08;独立开发&#xff09; 商业智能分析平台 | Python/FineReport/SQLAlchemy 项目描述 业务价值 &#xff1a;解决原有系统无法快速定位佣金异…

计算机毕设Spark项目实战:基于大数据技术的就业数据分析系统Django+Vue开发指南

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

如何让FastAPI任务系统在失败时自动告警并自我修复?

url: /posts/2f104637ecc916e906c002fa79ab8c80/ title: 如何让FastAPI任务系统在失败时自动告警并自我修复? date: 2025-08-20T08:18:42+08:00 lastmod: 2025-08-20T08:18:42+08:00 author: cmdragon summary: FastAPI 和 Celery 结合提供了强大的异步任务处理能力,但在分布…

Gitee仓库 日常操作详细步骤

新建仓库 → 上传代码 步骤1、打开Gitee仓库网站&#xff1a;开源软件 - Gitee.com 步骤2、点击右上角加号 点击新建仓库。 步骤3、设置仓库名 &#xff0c;选择是否开源 &#xff0c;点击创建。 步骤4、记住远程仓库URL 步骤5、本地新建文件夹&#xff0c;然后进行上传代码…

Python采集易贝(eBay)商品详情API接口,json数据返回

Python采集易贝(eBay)商品详情API接口要采集eBay商品详情&#xff0c;你可以使用eBay官方提供的API。以下是使用Python通过eBay Finding API获取商品详情的完整示例&#xff1a;准备工作注册账号并获取API密钥&#xff1a;选择适合的API&#xff08;如Finding API、Shopping AP…