
计算机网络学习
对于计算机网络常见问题疑问的学习过程的整理
gloryor
这个作者很懒,什么都没留下…
展开
-
IP地址的主机号和网络号
我们⼀般⽤ IP 地址给设备进⾏编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段,每段是 8 位。只有⼀个单纯的 IP 地址虽然做到了区分设备,但是寻址起来就特别麻烦,全世界那么多台设备,难道⼀个⼀个去匹配?这显然不科学。因此,需要将 IP 地址分成两种意义:⼀个是⽹络号,负责标识该 IP 地址是属于哪个⼦⽹的;⼀个是主机号,负责标识同⼀⼦⽹下的不同主机;怎么分的呢?这需要配合⼦⽹掩码才能算出 IP 地址 的⽹络号和主机号。那么在寻址的过程中,先匹配到相同的⽹络号,才会去找对原创 2021-09-25 11:38:29 · 4215 阅读 · 0 评论 -
IO多路复用
了解什么是IO对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:1. 等待数据准备 (Waiting for the data to be ready) 等待客户端连接(conn ,addr 客户端的每一个连接就是一个socket对象) 2. 将数据从内核拷贝到进程中 (Copying the data from the kernel to the process.原创 2021-09-11 17:15:54 · 206 阅读 · 0 评论 -
从在浏览器地址栏中输入网址到看到网页的简要过程
1 客户端浏览器获取用户在地址栏输入的域名。客户端浏览器将域名发送给DNS域名系统,请求解析。2 DNS解析域名得到相应的IP,返回给客户端浏览器。3 客户端浏览器根据IP向服务器发起TCP三次握手,建立TCP连接。4 客户端浏览器向服务器发送HTTP请求,请求网址首页。5 服务器通过HTTP响应向客户端浏览器返回网址首页文件。6 释放TCP连接,四次挥手。7 客户端浏览器解析HTML文件,根据文件内容获取CSS、JS等资源文件,将页面渲染展示给用户。...原创 2021-09-10 10:49:48 · 2770 阅读 · 0 评论 -
UDP如何实现可靠传输?
UDP应用:UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。UDP实现可靠传输的话,我们自己思考会学习TCP的思路,但是UDP的可靠机制只能在应用层实现。RUDPRUDP 提供一组数据服务质量增强机制,如拥塞控制的改进、重发机制及淡化服务器算法等,从而在包丢失和网络拥塞的情况下, RTP 客户机(实时位置)面前呈现的就是一个高质量的 RTP 流。在不干扰协议的实时特性原创 2021-09-09 22:14:29 · 267 阅读 · 0 评论 -
什么是ping?
PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。PING可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。工作原理:本地主机向目的IP地址发送一个ICMP请求包,并要求目的主机回发给本主机一个相同大小的数据报,用来测试网络的连通性。...原创 2021-09-09 22:06:18 · 4845 阅读 · 0 评论 -
既然MAC地址是唯一的,为什么还需要IP地址?
一、MAC地址是全球唯一的,但是我们不能只通过身份证就可以在全球范围找到这个人。我们需要利用IP地址来确定这个人的所在区域,在局域网中,可以使用本地的MAC地址进行通信。二、到达目标机器的局域网之后,此时需要利用MAC地址来确定目标机器。因为局域网的IP对应的机器是不固定的 ,所以,在局域网中使用IP寻址是不严谨的。三、假定MAC地址就是广播地址,那么所有接受过MAC包的路由器都会把这个消息进行转发,因此目标机器会收到很多重复的包(因为各个接受过该包的路由器都将其转发)。(为了防止上述现象.转载 2021-09-04 22:17:08 · 10278 阅读 · 2 评论 -
为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方ACK和FIN一般都会分开发送。...原创 2021-08-23 19:03:30 · 176 阅读 · 0 评论 -
TCP可靠传输
TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:其中,0 ≤ a < 1,RTTs 随着 a 的增加更容易受到 RTT 的影响。超时时间 RTO 应该略大于 RTTs,TCP 使用的超时时间计算如下:其中 RTTd 为偏差的加权平均值。...原创 2021-08-23 18:55:18 · 211 阅读 · 0 评论 -
粘包、拆包解决办法
消息定长:发送端将每个数据包封装为固定长度(不够的可以通过补 0 填充),这样接收端每次接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。设置消息边界:服务端从网络流中按消息边界分离出消息内容。在包尾增加回车换行符进行分割,例如 FTP 协议。...原创 2021-08-23 18:53:21 · 154 阅读 · 0 评论 -
为什么会发生粘包和拆包
要发送的数据大于 TCP 发送缓冲区剩余空间大小,将会发生拆包。 待发送数据大于 MSS(最大报文长度),TCP 在传输前将进行拆包。 要发送的数据小于 TCP 发送缓冲区的大小,TCP 将多次写入缓冲区的数据一次发送出去,将会发生粘包。 接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。 ...原创 2021-08-23 18:51:49 · 197 阅读 · 0 评论 -
什么是拆包和粘包
假设Client向Server发送了两个数据包,A1 和 A2.第一种情况,接收端正常收到两个数据包,即没有发生拆包和粘包的现象。第二种情况,接收端只收到一个数据包,但是这一个数据包中包含了发送端发送的两个数据包的信息,这种现象即为粘包。这种情况由于接收端不知道这两个数据包的界限,所以对于接收端来说很难处理。第三种情况,这种情况有两种表现形式,接收端收到了两三个数据包,有可能是A1被分成了两个,有可能是A1的一部分去了A2,或者A2的一部分在A1。这种情况即发生了拆包和粘包。这两种情况如果不加特原创 2021-08-23 18:48:34 · 910 阅读 · 0 评论 -
TCP连接为什么要三次握手
1、第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。2、换个易于理解的视角来看为什么要 3 次握手。客户端和服务端通信前要进行连接,“3次握手”的作用就是双方都能明确自己和对方的收、发能力是正常的。第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。从客户端的视角来看,我接到了服务端发送过来的原创 2021-08-23 18:39:20 · 7075 阅读 · 1 评论 -
UDP和TCP的特点和区别
1、UDP 和 TCP 的特点与区别用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数原创 2021-08-23 18:22:35 · 768 阅读 · 0 评论