Net
文章平均质量分 90
计算机网络
向北~
这个作者很懒,什么都没留下…
展开
-
计算机网络:Ping 的工作原理
协议查询 MAC 地址,获得 MAC 地址后,由数据链路层构建一个数据帧,目的地址是 IP 层传过来的 MAC 地址,源地址则是本机的 MAC 地址;会影响的是根据目标 IP 地址,选择路由的下一跳,还有每经过一个路由器到达一个新的局域网,需要换 MAC 头里面的 MAC 地址。,第一个路由器过了,遇到第二个路由器也牺牲了,也同时返回了 ICMP 差错报文数据包,如此往复,直到到达目的主机。收到这个数据帧后,先检查它的目的 MAC 地址,并和本机的 MAC 地址对比,如符合,则接收,否则就丢弃。原创 2023-05-15 09:15:00 · 494 阅读 · 0 评论 -
计算机网络:IP 协议
上网时通常使用的方式是域名,而不是 IP 地址,实现这一技术的就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址。DNS 中的域名都是用句点来分隔的,比如 ,这里的句点代表了不同层次之间的界限。在域名中,越靠右的位置表示其层级越高。根域是在最顶层,它的下一层就是 com 顶级域,再下面是 server.com。所以域名的层级关系类似一个树状结构:根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。所以,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了。因此,原创 2023-05-15 09:15:00 · 261 阅读 · 0 评论 -
计算机网络:IP 与 IP 地址
不管是路由器还是主机解析到一个 IP 地址时候,比如判断其 IP 地址的首位是否为 0,为 0 则为 A 类地址,那么就能很快的找出网络地址和主机地址。,比如一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种 IP 分类是没有地址层次划分的功能,所以这就。最大主机个数,就是要看主机号的位数,如 C 类地址的主机号占 8 位,那么 C 类地址的最大主机个数 = 2。路由器寻址工作中,也就是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。原创 2023-05-15 09:00:00 · 969 阅读 · 0 评论 -
计算机网络:Keep-Alive 与 Keepalive
HTTP 的 Keep-Alive 也叫 HTTP 长连接,该功能是由「应用程序」实现的,可以使得用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,减少了 HTTP 短连接带来的多次 TCP 连接建立和释放的开销。TCP 的 Keepalive 也叫 TCP 保活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。原创 2023-05-15 09:00:00 · 360 阅读 · 0 评论 -
计算机网络:TCP 半连接队列与全连接队列
当 TCP 全连接队列满导致服务器丢掉了 ACK,与此同时,客户端的连接状态却是 ESTABLISHED,进程就在建立好的连接上发送请求。,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,对服务端一直发送 SYN 包,但是不回第三次握手 ACK,这样就会使得服务端有大量的处于。命令给出的统计结果中, 可以得到由于半连接队列已满,引发的失败次数。,表示共有多少个 TCP 连接因为半连接队列溢出而被丢弃。如果 SYN 半连接队列已满,只能丢弃连接吗?原创 2023-05-15 08:45:00 · 223 阅读 · 0 评论 -
计算机网络:TCP 拥塞控制
快速重传算法,当接收方发现丢了一个中间包的时候,发送三次前一个包的 ACK,于是发送端就会快速地重传,不必等待超时再重传。TCP 在刚建立连接完成后,首先是有个慢启动的过程,这个慢启动的意思就是一点一点的提高发送数据包的数量。一直增长着后,网络就会慢慢进入了拥塞的状况了,于是就会出现丢包现象,这时就需要对丢失的数据包进行重传。所以,TCP 不能忽略网络上发生的事,当网络发送拥塞时,TCP 会自我牺牲,降低发送的数据量。流量控制是避免「发送方」的数据填满「接收方」的缓存,但是并不知道网络的中发生了什么。原创 2023-05-15 08:45:00 · 273 阅读 · 0 评论 -
计算机网络:TCP 流量控制
那么,当发生窗口关闭时,接收方处理完数据后,会向发送方通告一个窗口非 0 的 ACK 报文,如果这个通告窗口的 ACK 报文在网络中丢失了,这会导致发送方一直等待接收方的非 0 窗口通知,接收方也一直等待发送方的数据,如不采取措施,这种相互等待的过程,会造成了死锁的现象。Nagle 算法默认是打开的,如果对于一些需要小数据包交互的场景的程序,比如,telnet 或 ssh 这样的交互性比较强的程序,则需要关闭 Nagle 算法。个字节,为了传输那几个字节的数据,要搭上这么大的开销,这太不经济了。原创 2023-05-15 08:30:00 · 401 阅读 · 0 评论 -
计算机网络:滑动窗口
比如,ACK 600 确认应答报文丢失,也没关系,因为可以通过下一个确认应答进行确认,只要发送方收到了 ACK 700 确认应答,就意味着 700 之前的所有数据「接收方」都收到了。窗口的实现实际上是操作系统开辟的一个缓存空间,发送方主机在等到确认应答返回之前,必须在缓冲区中保留已发送的数据。当发送方把数据「全部」都一下发送出去后,可用窗口的大小就为 0 了,表明可用窗口耗尽,在没收到 ACK 确认之前是无法继续发送数据了。发送方发送的数据大小不能超过接收方的窗口大小,否则接收方就无法正常接收到数据。原创 2023-05-15 08:30:00 · 465 阅读 · 0 评论 -
计算机网络:TCP 重传机制
报文往返 RTT 的值」是经常变化的,因为我们的网络也是时常变化的。也就因为「报文往返 RTT 的值」 是经常波动变化的,所以「超时重传时间 RTO 的值」应该是一个。快速重传的工作方式是当收到三个相同的 ACK 报文时,会在定时器过期之前,重传丢失的报文段。,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以。如果超时重发的数据,再次超时的时候,又需要重传的时候,TCP 的策略是。在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的。在 Linux 下,可以通过。原创 2023-05-15 08:15:00 · 761 阅读 · 0 评论 -
计算机网络:TCP 四次挥手
如果客户端(主动关闭方)最后一次 ACK 报文(第四次挥手)在网络中丢失了,那么按照 TCP 可靠性原则,服务端(被动关闭方)会重发 FIN 报文。假设客户端没有 TIME_WAIT 状态,而是在发完最后一次回 ACK 报文就直接进入 CLOSE 状态,如果该 ACK 报文丢失了,服务端则重传的 FIN 报文,而这时客户端已经进入到关闭状态了,在收到服务端重传的 FIN 报文后,就会回 RST 报文。原创 2023-05-15 08:15:00 · 553 阅读 · 0 评论 -
计算机网络:TCP 三次握手
比较常回答的是:“因为三次握手才能保证双方具有接收和发送的能力。这回答是没问题,但这回答是片面的,并没有说出主要的原因。TCP 连接用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接。所以,重要的是为什么三次握手才可以初始化Socket、序列号和窗口大小并建立 TCP 连接。三次握手才可以阻止重复历史连接的初始化(主要原因)三次握手才可以同步双方的初始序列号三次握手才可以避免资源浪费原因一:避免历史连接三次握手的。原创 2023-05-12 09:30:00 · 971 阅读 · 0 评论 -
计算机网络:TCP
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。原创 2023-05-12 09:30:00 · 146 阅读 · 0 评论 -
计算机网络:HTTPS
为了保证传输的内容不被篡改,我们需要对内容计算出一个「指纹」,然后同内容一起传输给对方。对方收到后,先是对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较,如果「指纹」相同,说明内容没有被篡改,否则就可以判断出内容被篡改了。在计算机里会。原创 2023-05-12 09:15:00 · 436 阅读 · 0 评论 -
计算机网络:HTTP/3
队头阻塞,HTTP/2 多个请求跑在一个 TCP 连接中,如果序列号较低的 TCP 段在网络传输中丢失了,即使序列号较高的 TCP 段已经被接收了,应用层也无法从内核中读取到这部分数据,从 HTTP 视角看,就是多个请求被阻塞了;TCP 和 TLS 握手时延,TCL 三次握手和 TLS 四次握手,共有 3-RTT 的时延;连接迁移需要重新连接。原创 2023-05-12 09:15:00 · 288 阅读 · 0 评论 -
计算机网络:HTTP/2
HTTP/2 协议其实还有很多内容,比如流控制、流状态、依赖关系等等。这次主要介绍了关于 HTTP/2 是如何提升性能的几个方向,它相比 HTTP/1 大大提高了传输效率、吞吐能力。第一点,对于常见的 HTTP 头部通过静态表和 Huffman 编码的方式,将体积压缩了近一半,而且针对后续的请求头部,还可以建立动态表,将体积压缩近 90%,大大提高了编码效率,同时节约了带宽资源。原创 2023-05-12 09:00:00 · 480 阅读 · 0 评论 -
计算机网络:HTTP/1.1
同时 HTTP 由于是工作在应用层(原创 2023-05-12 09:00:00 · 5274 阅读 · 0 评论 -
计算机网络:HTTP 缓存
强缓存指的是只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。, 是一个相对时间;Expires,是一个绝对时间;如果 HTTP 响应头部同时有 Cache-Control 和 Expires 字段的话,Cache-Control的优先级高于 Expires。Cache-control 选项更多一些,所以建议使用 Cache-Control 来实现强缓存。原创 2023-05-12 08:45:00 · 610 阅读 · 0 评论 -
计算机网络:GET 和 POST
GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制(HTTP协议本身对 URL长度并没有做任何规定)。POST 请求携带数据的位置一般是写在报文 body 中, body 中的数据可以是任意格式的数据,只要客户端与服务端协商好即可,而且浏览器不会对 body 大小做限制。另外,URL 中的查询参数也不是 GET 所独有的,POST 请求的 URL 中也可以有参数的。《小林 coding》原创 2023-05-12 08:45:00 · 697 阅读 · 0 评论 -
计算机网络:HTTP
HTML 就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,再经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是。,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。,是协议处理中的一种中间状态,实际用到的比较少。处理了客户端的请求,也是我们最愿意看到的状态。原创 2023-05-12 08:30:00 · 943 阅读 · 0 评论 -
计算机网络:TCP/IP 网络分层
网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。电脑上的以太网接口,Wi-Fi接口,以太网交换机、路由器上的千兆,万兆以太网口,还有网线,它们都是以太网的组成部分。(最大报文长度,即除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度),就将数据包分块,若传输的过程中有分块丢失或损坏,就将这一分块重新传送即可,在TCP协议中,每个分块称为。原创 2023-05-12 08:30:00 · 1024 阅读 · 0 评论