网络
文章平均质量分 59
我是纠结伦
这个作者很懒,什么都没留下…
展开
-
TIME_WAIT状态过多有什么危害,如何解决
TIME_WAIT过多危害:网络情况不好时,如果主动方无TIME_WAIT等待,关闭前个连接后,主动方与被动方又建立起新的TCP连接,这时被动方重传或延时过来的FIN包过来后会直接影响新的TCP连接; 同样网络情况不好并且无TIME_WAIT等待,关闭连接后无新连接,当接收到被动方重传或延迟的FIN包后,会给被动方回一个RST包,可能会影响被动方其它的服务连接。 过多的话会占用内存,一个TIME_WAIT占用4k大小在高并发短连接的 TCP 服务器上,当服务器处理完请求后主动请求关闭连接,这样服务原创 2022-05-02 11:23:23 · 3227 阅读 · 0 评论 -
UDP如何实现可靠传输
UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响。传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。1、添加seq/ack机制,确保数据发送到对端 2、添加发送和接收缓冲区,主要是用户超时重传。原创 2022-05-02 10:46:42 · 9768 阅读 · 0 评论 -
HTTPS实现原理
版本一:以TLS1.2为例,以下为TLS1.2四次握手的详细流程(括号内为可选内容):第一次握手:第一次握手是客户端向服务器发送Client Hello消息,消息以明文的形式传输,里面包括客户端支持的协议版本、加密套件、压缩算法、客户端生成的一个随机数R1、扩展字段等。其中加密套件是四个功能的组合,即:认证算法(Au)、密钥交换算法(KeyExchange)、对称加密算法(Enc)和信息摘要算法,随机数R1则会在后面的密钥生成中使用到。第二次握手:① 应对客户端发来的Clien.原创 2022-04-29 08:52:57 · 424 阅读 · 0 评论 -
子网掩码的作用
1.划分出网络号和主机号:子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。为什么要分离网络号和主机号?因为两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址是否相同。如果网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机。路由器寻址工作中,也就是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。2.划分子网:子网划分实际上是将主机地址分为两个部.原创 2022-04-28 11:04:57 · 2279 阅读 · 0 评论 -
IP地址分类
IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类。上图中黄色部分为分类号,用以区分 IP 地址类别。什么是 A、B、C 类地址?其中对于 A、B、C 类主要分为两个部分,分别是网络号和主机号。什么是 D、E 类地址?而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。多播地址用于什么?多播用于将包发送给特定组内的所有主机。由于广播无法穿透路由,若想给.原创 2022-04-28 10:53:31 · 836 阅读 · 0 评论 -
两张图解决每一层所对应的网络协议
原创 2022-04-27 11:25:57 · 3205 阅读 · 0 评论 -
HTTP短连接和长连接的定义以及Keep-Alive和keepalive区别
这两个完全是两样不同东西,实现的层面也不同:HTTP 的 Keep-Alive,是由应用层(用户态)实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由TCP 层(内核态)实现的,称为 TCP 保活机制;Keep-Alive:如果每次请求都要经历这样的过程:建立 TCP -> 请求资源 -> 响应资源 -> 释放连接,那么此方式就是 HTTP 短连接,如下图:这样实在太累人了,一次连接只能请求一次资源。能不能在第一个 HTTP 请求完后,先不...原创 2022-04-27 11:10:33 · 3456 阅读 · 0 评论 -
TCP连接过程中如果拔掉网线会发生什么?
TCP 连接在 Linux 内核中是一个名为struct socket的结构体,该结构体的内容包含 TCP 连接的状态等信息。当拔掉网线的时候,操作系统并不会变更该结构体的任何内容,所以 TCP 连接的状态也不会发生改变。接下来,要看拔掉网线后,双方做了什么动作。所以, 针对这个问题,要分场景来讨论:拔掉网线后,有数据传输; 拔掉网线后,没有数据传输;拔掉网线后,有数据传输:在客户端拔掉网线后,服务端向客户端发送的数据报文会得不到任何的响应,在等待一定时长后,服务端就会触发超..原创 2022-04-27 10:44:56 · 1760 阅读 · 0 评论 -
在TCP连接中,如果有一方宕机或者进程崩溃会发生什么?
当情况为宕机时:首先是keepalive的影响:在没有开启 TCP keepalive,且双方一直没有数据交互的情况下,如果客户端的「主机崩溃」了,会发生什么。客户端主机崩溃了,服务端是无法感知到的,在加上服务端没有开启 TCP keepalive,又没有数据交互的情况下,服务端的 TCP 连接将会一直处于 ESTABLISHED 连接状态,直到服务端重启进程。所以,我们可以得知一个点,在没有使用 TCP 保活机制且双方不传输数据的情况下,一方的 TCP 连接处在 ESTABLISHED原创 2022-04-27 10:35:59 · 3078 阅读 · 0 评论 -
TCP keepalive 保活机制
如果两端的 TCP 连接一直没有数据交互,达到了触发 TCP 保活机制的条件,那么内核里的 TCP 协议栈就会发送探测报文。如果对端程序是正常工作的。当 TCP 保活的探测报文发送给对端, 对端会正常响应,这样TCP 保活时间会被重置,等待下一个 TCP 保活时间的到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。当 TCP 保活的探测报文发送给对端后,石沉大海,没有响应,连续几次,达到保活探测次数后,TCP 会报告该 TCP 连接已经死亡。所以,TCP 保活机制可以在双方没有数据交互的.原创 2022-04-27 10:24:05 · 3513 阅读 · 0 评论 -
HTTP和HTTPS区别
Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。 HTTP 连接建立相对简单, TCP 三次握手.原创 2022-04-26 13:30:08 · 493 阅读 · 0 评论 -
拥塞控制、慢启动、拥塞避免、快重传、快恢复
拥塞控制原理:原因是有可能整个网络环境特别差,容易丢包,那么发送端就应该注意了。主要用三种方法:慢启动阈值 + 拥塞避免 快速重传 快速恢复慢启动阈值 + 拥塞避免对于拥塞控制来说,TCP 主要维护两个核心状态:拥塞窗口(cwnd) 慢启动阈值(ssthresh)拥塞窗口和发生窗口联系:在发送端使用拥塞窗口来控制发送窗口的大小。然后采用一种比较保守的慢启动算法来慢慢适应这个网络,在开始传输的一段时间,发送端和接收端会首先通过三次握手建立连接,确定各自接收窗口大小原创 2022-04-26 11:10:39 · 1481 阅读 · 0 评论 -
TCP如何保证可靠性?
TCP 是面向连接的、可靠的、传输层通信协议可靠体现在:有状态、可控制有状态是指 TCP 会确认发送了哪些报文,接收方受到了哪些报文,哪些没有收到,保证数据包按序到达,不允许有差错 可控制的是指,如果出现丢包或者网络状况不佳,则会跳转自己的行为,减少发送的速度或者重发所以上面能保证数据包的有效传输。确保传输可靠性的方式TCP协议保证数据传输可靠性的方式主要有:校验和 序列号 确认应答 超时重传 连接管理 流量控制 拥塞控制校验和计算方式:在数据传输的过程中,将发送原创 2022-04-26 11:02:17 · 550 阅读 · 0 评论 -
在TIME_WAIT状态下收到RST报文会发生什么?
会不会断开,关键看 net.ipv4.tcp_rfc1337 这个内核参数(默认情况是为 0):如果这个参数设置为 0, 收到 RST 报文会提前结束 TIME_WAIT 状态,释放连接。 如果这个参数设置为 1, 就会丢掉 RST 报文。源码处理如下:enum tcp_tw_statustcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, const struct tcphd原创 2022-04-26 10:35:25 · 475 阅读 · 0 评论 -
什么是时间戳以及有什么用?
1、什么是时间戳时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。2、时间戳有什么用时间戳主要用于清理缓存,大多数用于版本更新;首先创建一个web项目,写一个jsp页面;2.然后访问这个项目查看页面效果:这个时候,使用F12开发者工具,看到资源是从服务...转载 2022-04-26 10:32:52 · 21684 阅读 · 2 评论 -
处于TIME_WAIT下如果收到SYN报文后会发生什么?
先说结论:如果双方开启了时间戳机制:如果客户端的 SYN 的「序列号」比服务端「期望下一个收到的序列号」要大,并且SYN 的「时间戳」比服务端「最后收到的报文的时间戳」要大。那么就会重用该四元组连接,跳过 2MSL 而转变为 SYN_RECV 状态,接着就能进行建立连接过程。 如果客户端的 SYN 的「序列号」比服务端「期望下一个收到的序列号」要小,或者SYN 的「时间戳」比服务端「最后收到的报文的时间戳」要小。那么就会再回复一个第四次挥手的 ACK 报文,客户端收到后,发现并不是自己期望收到确认原创 2022-04-26 10:23:07 · 808 阅读 · 0 评论 -
除了四次挥手外如何关闭一个TCP连接
思路是伪造一个四元组相同的 RST 报文如果 RST 报文的序列号不能落在对方的滑动窗口内,这个 RST 报文会被对方丢弃的,就达不到关闭的连接的效果。所以,要伪造一个能关闭 TCP 连接的 RST 报文,必须同时满足「四元组相同」和「序列号正好落在对方的滑动窗口内」这两个条件。直接伪造符合预期的序列号是比较困难,因为如果一个正在传输数据的 TCP 连接,滑动窗口时刻都在变化,因此很难刚好伪造一个刚好落在对方滑动窗口内的序列号的 RST 报文。办法还是有的,我们可以伪造一个四元组相同的原创 2022-04-25 10:15:51 · 221 阅读 · 0 评论 -
RST报文以及产生场景
RST:(Resetthe connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误;目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;客户端发起三次握手,发送完第一个SYN分节之后,收到来自服务器的RST分节(个人理解,分节就是报文段?)。RST分节的内容:如果收到的是ACK报文,RST取ACK报文的ACK序列号为RST报文的SEQ;如果报文不是ACK报文,RST的SEQ为0且ACK字段为收到的报文SEQ+报文.原创 2022-04-25 10:09:17 · 4630 阅读 · 0 评论 -
已建立连接的TCP,收到SYN会发生什么?
情景:一个已经建立的 TCP 连接,客户端中途宕机了,而服务端此时也没有数据要发送,一直处于 establish 状态,客户端恢复后,向服务端建立连接,此时服务端会怎么处理?然后这个场景中,客户端的IP、服务端IP、目的端口并没有变化,所以这个问题关键要看客户端发送的 SYN 报文中的源端口是否和上一次连接的源端口相同。1. 客户端的 SYN 报文里的端口号与历史连接不相同此时服务端会认为是新的连接要建立,于是就会通过三次握手来建立新的连接。如果服务端发送了数据包给客户端,由于客户端的连原创 2022-04-25 10:02:14 · 563 阅读 · 0 评论 -
SYN 洪泛、SYN 攻击、DDos 攻击以及如何抵御
SYN 洪泛、SYN 攻击、DDos 攻击实际上就是对服务端一直发送 TCP SYN 包,但是不回第三次握手 ACK,这样就会使得服务端有大量的处于 SYN_RECV 状态的 TCP 连接。这里给出几种防御 SYN 攻击的方法:增大半连接队列;开启 tcp_syncookies 功能减少 SYN+ACK 重传次数方式一:增大半连接队列要想增大半连接队列,我们得知不能只单纯增大 tcp_max_syn_backlog 的值,还需一同增大 somaxconn 和 backlog,也就是增大全原创 2022-04-25 09:42:01 · 1435 阅读 · 0 评论 -
为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?
为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?主要原因是为了防止历史报文被下一个相同四元组的连接接收。TCP 四次挥手中的 TIME_WAIT 状态不是会持续 2 MSL 时长,历史报文不是早就在网络中消失了吗?是的,如果能正常四次挥手,由于 TIME_WAIT 状态会持续 2 MSL 时长,历史报文会在下一个连接之前就会自然消失。但是来了,我们并不能保证每次连接都能通过四次挥手来正常关闭连接。假设每次建立连接,客户端和服务端的初始化序列号都是从 0 开始:.原创 2022-04-24 11:07:04 · 524 阅读 · 0 评论 -
TCP如何解决粘包
如何解决粘包?粘包的问题出现是因为不知道一个用户消息的边界在哪,如果知道了边界在哪,接收方就可以通过边界来划分出有效的用户消息。一般有三种方式分包的方式:固定长度的消息; 特殊字符作为边界; 自定义消息结构。#固定长度的消息这种是最简单方法,即每个用户消息都是固定长度的,比如规定一个消息的长度是 64 个字节,当接收方接满 64 个字节,就认为这个内容是一个完整且有效的消息。但是这种方式灵活性不高,实际中很少用。#特殊字符作为边界我们可以在两个用户消息之间插入一个特殊的字符原创 2022-04-23 10:54:30 · 6027 阅读 · 0 评论 -
面向流与面向数据报的区别
TCP是面向流的服务,UDP是面向数据报的服务,那面向流与面向数据报,是什么意思呢?教科书上一般会解释说,面向流是指无边界,面向数据报是有边界的。1、TCP打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。 上面的例子中,往水池里倒几次水和接几次水是没有必然联系的,也就是说你可以只倒一次水,然后分10次接完。另外,水池里的水接多少就会少多少;往里面倒多少水,就会增加多少水,但是不能超过水池的原创 2022-04-21 14:15:55 · 228 阅读 · 0 评论 -
TCP拥塞控制之慢启动、拥塞避免、快重传、快恢复
拥塞控制为什么要有拥塞控制呀,不是有流量控制了吗?前面的流量控制是避免「发送方」的数据填满「接收方」的缓存,但是并不知道网络的中发生了什么。一般来说,计算机网络都处在一个共享的环境。因此也有可能会因为其他主机之间的通信使得网络拥堵。在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但是一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断地放大....所以,TCP 不能忽略网络上发生的事,它被原创 2022-04-19 15:08:28 · 5873 阅读 · 0 评论 -
为什么会有SOCKET
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。socket是对TCP/IP协议的封装,它的出现只是使得程序员更方便地使用TCP/IP协议栈而已。socket本身并不是协议,它是应用层与TCP/IP协议族通信的中间软件抽象层,是一组调用接口(TCP/IP网络的API函数)网络有一段关于socket和TCP/IP协议关原创 2022-04-18 10:57:42 · 397 阅读 · 0 评论 -
MSL和TTL联系
MSL是 Maximum Segment Lifetime,报文最大生存时间,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为 TCP 报文基于是 IP 协议的,而 IP 头中有一个TTL字段,是 IP 数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减 1,当此值为 0 则数据报将被丢弃,同时发送 ICMP 报文通知源主机。MSL 与 TTL 的区别: MSL 的单位是时间,而 TTL 是经过路由跳数。所以MSL 应该要大于等于 TTL 消耗为 0 的时间,以确保报...原创 2022-04-18 10:35:51 · 1444 阅读 · 0 评论 -
MTU和MSS以及为什么需要MSS
我们先来认识下 MTU 和 MSSMTU:一个网络包的最大长度,以太网中一般为1500字节; MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度;如果在 TCP 的整个报文(头部 + 数据)交给 IP 层进行分片,会有什么异常呢?当 IP 层有一个超过MTU大小的数据(TCP 头部 + TCP 数据)要发送,那么 IP 层就要进行分片,把数据分片成若干片,保证每一个分片都小于 MTU。把一份 IP 数据报进行分片以后,由目标主机的 IP 层来进行重...原创 2022-04-18 10:27:57 · 878 阅读 · 0 评论 -
TCP 和 UDP 区别及使用场景(详细)
TCP 和 UDP 区别:1. 连接TCP 是面向连接的传输层协议,传输数据前先要建立连接。 UDP 是不需要连接,即刻传输数据。2. 服务对象TCP 是一对一的两点服务,即一条连接只有两个端点。 UDP 支持一对一、一对多、多对多的交互通信3. 可靠性TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。 UDP 是尽最大努力交付,不保证可靠交付数据。4. 拥塞控制、流量控制TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。 UDP 则没有,即使网络非原创 2022-04-18 10:20:21 · 6661 阅读 · 0 评论 -
Cookie和Session的区别(可能最全)
一.Cookie详解(1)Cookie是什么 ?Cookie,有时也用其复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。(2)为什么要使用Cookie?解决了什么问题 ?web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面原创 2022-04-10 15:03:43 · 2489 阅读 · 0 评论 -
如何优化HTTP/1.1
3 种优化思路:尽量避免发送 HTTP 请求; 在需要发送 HTTP 请求时,考虑如何减少请求次数; 减少服务器的 HTTP 响应的数据大小;如何避免发送 HTTP 请求?对于一些具有重复性的 HTTP 请求, 我们可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据。所以,避免发送 HTTP 请求的方法就是通过缓存技术客户端会把第一次请求以及响应的数据保存在本地磁盘上,其中将请求的 URL 作为 key,而响应作为 value,两者形成映射关系。这样当后续原创 2022-04-07 21:28:29 · 192 阅读 · 0 评论 -
面试题:HTTP1.0和HTTP1.1和HTTP2.0的区别
HTTP1.0和HTTP1.1和HTTP2.0的区别1 HTTP1.0和HTTP1.1的区别1.1 长连接(Persistent Connection) HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。1.2 节约带宽...原创 2022-04-05 17:28:06 · 391 阅读 · 0 评论 -
路由器工作原理
路由器基本原理路由器的端口具有 MAC 地址,因此它就能够成为以太网的发送方和接收方;同时还具有 IP 地址,从这个意义上来说,它和计算机的网卡是一样的。当转发包时,首先路由器端口会接收发给自己的以太网包,然后路由表查询转发目标,再由相应的端口作为发送方将以太网包发送出去。路由器的包接收操作首先,电信号到达网线接口部分,路由器中的模块会将电信号转成数字信号,然后通过包末尾的FCS进行错误校验。如果没问题则检查 MAC 头部中的接收方 MAC 地址,看看是不是发给自己的包,如果...原创 2022-04-02 13:16:39 · 293 阅读 · 0 评论 -
交换机工作原理
交换机的设计是将网络包原样转发到目的地。交换机工作在 MAC 层,也称为二层网络设备。交换机的包接收操作首先,电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号。然后通过包末尾的FCS校验错误,如果没问题则放到缓冲区。这部分操作基本和计算机的网卡相同,但交换机的工作方式和网卡不同。计算机的网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址..原创 2022-04-02 13:15:28 · 217 阅读 · 0 评论 -
路由器和交换机的区别
路由器与交换机的区别网络包经过交换机之后,现在到达了路由器,并在此被转发到下一个路由器或目标设备。这一步转发的工作原理和交换机类似,也是通过查表判断包转发的目标。不过在具体的操作过程上,路由器和交换机是有区别的。因为路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址; 而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。...原创 2022-04-02 13:12:06 · 227 阅读 · 0 评论 -
SYN, FIN, ACK, PSH, RST, URG含义
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:URG:Urget pointer is valid (紧急指针字段值有效)SYN: 表示建立连接FIN: 表示关闭连接ACK: 表示响应PSH: 表示有 DATA数据传输RST: 表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之原创 2022-04-02 12:52:49 · 2358 阅读 · 0 评论 -
为什么需要三次握手?两次不行?
为了实现可靠传输,发送方和接收方始终需要同步( SYNchronize )序号。 需要注意的是, 序号并不是从 0 开始的, 而是由发送方随机选择的初始序列号 ( Initial Sequence Number, ISN )开始 。 由于 TCP 是一个双向通信协议, 通信双方都有能力发送信息, 并接收响应。 因此, 通信双方都需要随机产生一个初始的序列号, 并且把这个起始值告诉对方。于是, 这个过程就变成了下面这样。...原创 2022-04-02 10:52:27 · 1639 阅读 · 0 评论 -
面试题:DNS域名解析过程(超详细)
通过浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给Web服务器。但在发送之前,还有一项工作需要完成,那就是查询服务器域名对应的 IP 地址,因为委托操作系统发送消息时,必须提供通信对象的 IP 地址。比如我们打电话的时候,必须要知道对方的电话号码,但由于电话号码难以记忆,所以通常我们会将对方电话号 + 姓名保存在通讯录里。所以,有一种服务器就专门保存了Web服务器域名与IP的对应关系,它就是DNS服务器。域名的层级关系DNS 中的域名都...原创 2022-04-02 10:05:14 · 2066 阅读 · 0 评论 -
服务器响应状态码
常用的状态码200 :服务器响应正常304:该资源在上次请求之后没有任何修改(这通常用于浏览器的缓存机制,使用GET请求时尤其需要注意)。400:无法找到请求的资源。401:访问资源权限不够。403:没有权限访问资源。404:需要访问的资源不存在。405:需要访问的资源被禁止。407:访问的资源需要代理身份验证。414:请求的URL太长。500:服务器内部错误。常用状态码记忆200:请求成功(后台处理结果ok)303:重定向400:请求错误401:未授权403:禁止访问.原创 2022-04-02 09:56:43 · 2341 阅读 · 0 评论 -
TCP/IP网络模型
应用层最上层的,也是我们能直接接触到的就是应用层(Application Layer),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。所以,应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。应用层是不用去关心数据是如何传输的,就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。而且应用层是工作在操作系统中的用户态原创 2022-04-01 18:30:29 · 2385 阅读 · 0 评论 -
DNS(域名解析协议)过程
域名解析过程域名解析总体可分为一下过程:(1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.(2) 如果没有, 就向上级域名服务器进行查找, 依次类推(3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址(4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程具体可描述如下:1. 主机先向本地域名服务器进行递归查询2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询3. 根域名服务器告诉原创 2022-03-25 18:59:13 · 620 阅读 · 0 评论