计算机网络
文章平均质量分 80
计算机网络相关基础知识
small_engineer
把学习比作游戏是再合适不过了,学习到了一点新技术,就相当于学到了新的必杀技;刷LeetCode就像打怪,一个个打过去;写项目就像搭建城堡,先从地基打起,逐渐到高楼大厦
展开
-
IP协议相关技术终极详解
IP协议相关技术DNS域名解析协议概述域名的层级关系域名的解析流程ARP地址解析协议概述DNS域名解析协议概述我们在上网时,通常使用的都是域名来访问网站,因为域名更容易记住,总不可能记住一串ip地址吧。那么网络如何将域名转换成对应的ip地址呢?这就需要我们的DNS域名解析协议了域名的层级关系DNS中的域名都是靠句点来进行分割的,越靠右的层级越高,因为外国人的思维都是跟中国人相反的。根域在最顶层,它的下一层就是.com顶级域,如图所示:根域的DNS服务器信息保存在互联网中所有DNS服务器中,原创 2022-04-26 11:19:20 · 2783 阅读 · 1 评论 -
已经建立的TCP,收到SYN会发生什么?
已经建立的TCP,收到SYN会发生什么?该场景可以描述为:客户端与服务端建立连接后,突然客户端死机了,而服务器还处于establelisten状态,这时客户端开机后再次发送syn报文请求建立连接,那么服务端收到这个syn报文会做出什么反应呢??一个TCP连接是由一个四元组唯一确认的,此时源ip,目标ip,目标端口是确定的,只有源端口是不确定的。客户端SYN报文的源端口与历史端口是不一样的这样的话,相当于客户端重新建立起了一次新的连接那么服务端处于establelisten状态的连接,如果服务端原创 2022-04-21 13:39:19 · 2682 阅读 · 0 评论 -
SYN报文什么时候会被丢弃?
开启tcp_tw_recycle参数,并且在NAT环境下,造成syn包丢弃tcp最后挥手时,需要发起关闭方等待2MSL时间后才能关闭,Linux提供了两个系统参数可以快速回收time_wait状态的连接,这两个参数都是默认关闭的。net.ipv4.tcp_tw_reuse:如果开启该选项的话,tcp在新建连接时,会自动选择time_wait状态超过1s的连接来进行复用,该选项只适用于连接方net.ipv4_tcp_tw_recycle:如果开启该选项的话,允许处于time_wait状态的连接快速回收原创 2022-04-21 09:04:30 · 2334 阅读 · 0 评论 -
如何理解TCP是面向字节流协议及粘包问题解决
如何理解TCP是面向字节流协议之所以说TCP是面向字节流协议,UDP是面向报文协议。主要是因为发送方的发送消息的机制不同UDP是面向报文协议udp在发送消息时,在传输层直接就将一个消息打包成一个完整的包,组装好udp头部,不进行切割,就转发给网络层。也就是每一个UDP报文就是一个消息。服务端在接收到udp报文时,会将它放到一个队列中,一个元素就是一个udp报文。每次读取时,读取一个元素TCP是面向字节流协议当tcp在传输层发送消息时,一个消息可能会被分割成多个tcp报文进行转发给网络层。我们不原创 2022-04-19 11:15:13 · 2369 阅读 · 0 评论 -
TCP四次挥手详解(含常见面试题)
TCP四次挥手过程客户端发起fin位为1的FIN报文,此时客户端进入FIN_WAIT_1状态服务端接受到FIN 报文后,发送ack应答报文,此时服务端进入close_wait状态客户端接受到ack应答报文后,进入FIN_WAIT_2状态服务端处理完数据后,向客户端发送FIN报文,此时服务端进入LAST_ACK状态客户端接受到FIN报文后,客户端发送应答ack报文,进入TIME_WAIT阶段服务端接受到ack报文后,断开连接,处于close状态客户端过一段时间后,也就是2MSL后,进入clos原创 2022-04-19 10:09:52 · 21494 阅读 · 1 评论 -
TCP半连接队列和全连接队列
什么是TCP半连接队列和全连接队列?在TCP进行三次握手时,Liunx会为其维护两个队列:半连接队列,也叫syn队列全连接队列,也叫accept队列在客户端发起第一次连接时,服务端会将其加入到syn队列中,并且响应客户端syn+ack报文,等到客户端发送ack应答报文时,服务端将该连接从半连接队列中取出,并新建一个新的连接,加入到accept队列当中。等待进程调用accept请求时,将该连接取出来不管是半连接队列还是全连接队列,都有最大长度限制,超过限制时,内核会直接丢弃,或返回 RST 包原创 2022-04-16 09:58:51 · 4289 阅读 · 0 评论 -
TCP三次握手(含常见面试题)详解
TCP 头格式序列号:在建立连接时就由计算机随机生成,每发送一次数据,该序列号+1,用来解决网络中包乱序的问题确认应答号:表示下一次期望收到的报文序列号,表示以前的数据报都已经收到了,用来解决网络中丢包的问题控制位:ACK:该位为1时,确认应答号是有效的,除了建立连接开始的syn包时,其他包该位必须为1RST:该位为1时,表示出现异常,强制连接断开SYN: 该位为1时,表示希望建立连接,并且初始化序列号FIN: 该位为1时,希望正常断开连接,通信双方互相交换FIN,表示可以断开TCP连原创 2022-04-15 09:34:28 · 13338 阅读 · 6 评论 -
TCP滑动窗口,流量控制,拥塞控制详解
引言我们知道TCP是每发送一个数据,都要进行一次确认应答报文的。当上一个收到应答时,才会继续发送下一个。这种方式很显然效率比较低滑动窗口窗口大小就是无需等待应答,而可以继续发送数据的最大值滑动窗口实际上就是在操作系统中开辟一个缓存空间,发送方在等待应答报文之前,必须保留前面未确定的数据。如果收到了应答,则可以从缓冲区清楚图中的 ACK 600 确认应答报文丢失,也没关系,因为可以通过下一个确认应答进行确认,只要发送方收到了 ACK 700 确认应答,就意味着 700 之前的所有数据「接收原创 2022-04-12 11:24:53 · 4172 阅读 · 1 评论 -
TCP重传机制详解
本文提纲重传机制TCP针对数据包丢失的情况,采用重传机制解决常见的重传机制:超时重传快速重传SACKD-SACK超时重传超时重传:当发送数据时,设立一个定时器,当超过指定时间后,发送端没有收到ACK应答报文,则触发超时重传机制,重发该数据超时时间设置为多少呢?也就是超时重传时间RTO假设我们设置的超时重传时间过短的话,那么就很有可能造成我们数据包还没到接收端或者应答ACK没到发送方就会重传:假设我们设置超时时间过长的话,那么就会导致数据包丢失了一段花时间,我们才重传,减低原创 2022-04-11 12:45:15 · 6659 阅读 · 0 评论 -
计算机网络体系结构
计算机网络协议层数OSI的七层协议体系结构:概念清楚,理论也较完整,但是它复杂且不实用TCP/IP的四层协议体系结构:在实际中得到了广泛的应用。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络原理时往往采用折中办法,即综合OSI和TCP/IP的优点,采用一种五层协议的体系结构。五层协议的体系结构:只是为了介绍计算机网络原理而设计的,实际应用还是TCP/IP四层结构应用层应用层是网络应用程序及它们的应用层协 议存留的地方。因特网的应用原创 2022-03-27 13:20:42 · 2782 阅读 · 0 评论