当前位置: 首页 > news >正文

简单计算机网络概念

1.浏览器过程

输入url,解析url

1.协议http、https的区别;HTTPS就是在HTTP与TCP之间增加了SSL/TSL安全传输层
2.格式:协议//主机:端口/路径;
3.HTTP版本:1.0和1.1
4.HTTP/1.1:1. 持久连接:为了解决 HTTP/1.0 每次请求都需要建⽴新的连接的问题, HTTP/1.1 持久连接,只                        要客户端和服务器任意⼀端没有明确提出断开连接,则保持TCP连接状态。

本地解析域名,如果没有向DNS服务器进行域名解析获取ip地址

1.是什么/为什么
2.DNS的过程
3.根域名服务器

向服务器请求http链接

1.http使用的是tcp,3次握手
2.请求方式get/post

服务器返回

1.常见状态码200/300/400/
2.cookies是什么

断开链接

1. 4次挥手

2.DNS域名解析

使用容易记忆的域名替换IP

1.域名解析:域名->IP的过程 
2.DNS属于应用层

过程

1. 先查询浏览器缓存。
2. 缓存中没有,查询本地的Host⽂件。
3. Host⽂件没有则会向本地的DNS服务器查询。
4. 如果本地DNS解析器有该域名的ip地址,就会直接返回,如果没有会向根DNS服务器发出查询请求。根DNS服务器并不负责解析域名,但它能告诉本地DNS解析器应该向哪个顶级域的DNS服务器继续查询。
5. 本地DNS解析器接着向指定的顶级域名DNS服务器发出查询请求。顶级域DNS服务器也不负责具体的域名解
析,但它能告诉本地DNS解析器应该前往哪个权威DNS服务器查询下⼀步的信息。
6. 本地DNS解析器最后向权威DNS服务器发送查询请求。
7. 本地DNS解析器将收到的IP地址返回给浏览器,并且还会将域名解析结果缓存在本地。
8. 浏览器发起连接。

查询方式 

递归查询
在递归查询中,DNS客户端(通常是本地DNS解析器)向上层DNS服务器(如根域名服务器、顶级域名服务器)发起查询请求,并要求这些服务器直接提供完整的解析结果。递归查询的特点是,DNS客户端只需要发送⼀个查询请求,然后等待完整的解析结果。上层DNS服务器会⾃⾏查询下⼀级的服务器,并将最终结果返回给DNS客端。
迭代查询
在迭代查询中,DNS客户端向上层DNS服务器发起查询请求,但不要求直接提供完整的解析结果。相反,DNS客户端只是询问上层服务器⼀个更⾼级的域名服务器的地址,然后再⾃⾏向那个更⾼级的服务器发起查询请求,以此类推,直到获取完整的解析结果为⽌。递归查询适合普通⽤户和客户端,⽽迭代查询适⽤于DNS服务器之间的通信。

3. UDP

4.TCP 

 

序列号:该报⽂段⾸字节的字节流编号。
确认应答号:对发送来的 TCP 报⽂段的响应,值是收到的TCP报⽂段的序号值加1,⽤来解决不丢包的问题。序列号和确认应答号都⽤于实现可靠数据传输。
⾸部⻓度:标识TCP头部有多少字节,最⻓ 60。
窗⼝⼤⼩:接收窗⼝,告诉对⽅本端TCP缓冲区还有多少空间可以接收数据,⽤来做流量控制。
标志字段:ACK:⽤于指示确认应答号值是否有效,置1表示包含⼀个对已成功接收报⽂段的确认;RST:⽤于重置⼀个已经混乱的连接,或拒绝⼀个⽆效的数据段或者连接请求;SYN:⽤于连接建⽴过程,请求建⽴⼀个连接;FIN:⽤于断开连接,表示发送⽅没有数据要传输了。
检验和:接收⽅使⽤检验和来检查该报⽂段(头部+数据)中是否出现差错(CRC算法)。

 三次握手

1、第⼀次握⼿:SYN报⽂:
客户端随机初始化序列号 client_isn ,放进TCP⾸部序列号段,然后把SYN置1。把SYN报⽂发送给服务端,表示发起连接,之后客户端处于SYN-SENT状态。
2、第⼆次握⼿:SYN+ACK报⽂:
服务端收到客户端的SYN报⽂之后,会把⾃⼰随机初始化的序号 server_isn 放进TCP⾸部序列号段,「确认应答号」填⼊ client_isn + 1 ,把SYN和ACK标志位置为1。把SYN+ACK报⽂发送给客户端,然后进⼊ SYN-RCVD 状态,表示服务器接受了客户端的请求,并希望建⽴连接。
3、第三次握⼿:ACK报⽂:
客户端收到服务端报⽂后,还要向服务端回应最后⼀个应答报⽂。⾸先该应答报⽂ TCP ⾸部 ACK 标志位置为1 ,其次「确认应答号」字段填⼊ server_isn + 1 ,最后把报⽂发送给服务端,这次报⽂可以携带客户到服务器的数据,之后客户端处于 ESTABLISHED 状态, 表示客户端已经准备好与服务器进⾏数据传输。服务器收到客户端的应答报⽂后,也进⼊ ESTABLISHED 状态。此时,TCP 连接已经建⽴起来,通信双⽅可以开始进⾏数据传输。

 为什么是三次

1. 三次握⼿才可以阻⽌重复历史连接的初始化(主因):由于网络原因客户端多次请求链接
2. 三次握⼿才可以同步双⽅的初始序列号
3. 三次握⼿才可以避免资源浪费:3次就够了,4次多余

SYN攻击

在 SYN 攻击中,攻击者发送⼤量伪造的 SYN 请求到⽬标服务器,但不完成后续的握⼿过程,从⽽让服务器⼀直等待确认,消耗服务器的资源(如半连接队列和系统资源),当半连接队列满了之后,后续再收到SYN报⽂就会丢弃,导致⽆法与客户端之间建⽴连接。

四次挥手

在挥⼿之前,客户端和服务器都处于 ESTABLISHED 状态
1. 第⼀次挥⼿:假设客户端打算关闭连接,发送⼀个TCP⾸部FIN被置1的 FIN 报⽂给服务端, 此时客户端处于FIN_WAIT1 状态
2. 第⼆次挥⼿:服务端收到以后,向客户端发送ACK应答报⽂,且把客户端的序列号值+1作为ACK报⽂的序列号
值,表明已经收到客户端的报⽂了,此时服务端处于 CLOSE_WAIT 状态
3. 第三次挥⼿:等待服务端处理完数据后,向客户端发送FIN报⽂。此时服务端处于 LAST_ACK 的状态
4. 第四次挥⼿:客户端接收到FIN报⽂后回⼀个ACK应答报⽂,之后客户端处于 TIME_WAIT 状态
5. 服务器收到ACK报⽂后,进⼊ CLOSE 状态,服务器完成连接关闭。
6. 客户端在经过 2MSL ⼀段时间后,⾃动进⼊ CLOSE 状态,客户端也完成连接的关闭。

为什么是四次

服务端通常需要等待完成数据的发送和处理,所以服务端的ACK和FIN⼀般都会分开发送,从⽽
⽐三次握⼿导致多了⼀次。

TIME_WAIT 状态

主动发起关闭连接的⼀⽅,才会有 TIME-WAIT 状态。
需要 TIME-WAIT 状态,主要是两个原因:
1. 防⽌历史连接中的数据,被后⾯相同四元组的连接错误的接收;
如果⽹络出现拥塞或延迟,数据包可能会在⽹络中滞留⼀段时间,甚⾄超过了原始连接关闭的时间。
如果没有TIME_WAIT 状态,客户端直接进⼊到CLOSE状态,这些滞留的数据包可能会被传递给新连接,
导致新连接的数据被旧连接的数据⼲扰。经过 2MSL 这个时间,⾜以让两个⽅向上的数据包都被丢弃,使得
原来连接的数据包在⽹络中都⾃然消失,再出现的数据包⼀定都是新建⽴连接所产⽣的。
2. 保证「被动关闭连接」的⼀⽅能被正确的关闭,即保证最后的 ACK 能让被动关闭⽅接收,从⽽帮助其正常
关闭如果最后的⼀次ACK报⽂丢失(第四次挥⼿),客户端没有 TIME_WAIT 状态,直接进⼊ClOSE,服务端⼀
直在等待ACK状态,⼀直没有等到,就会重发FIN报⽂,⽽客户端已经进⼊到关闭状态,在收到服务端重传的 
FIN 报⽂后,就会回 RST 报⽂,服务端收到这个 RST 并将其解释为⼀个错误, 为了防⽌这种情况出现,客户
端必须等待⾜够⻓的时间,确保服务端能够收到 ACK,如果服务端没有收到 ACK,那么就会触发 TCP 重传机
制,服务端会重新发送⼀个FIN,这样⼀去⼀来刚好两个 MSL 的时间。
如果 TIME-WAIT 等待⾜够⻓的情况就会遇到两种情况:
1. 服务端正常收到四次挥⼿的最后⼀个 ACK 报⽂,则服务端正常关闭连接。
2. 服务端没有收到四次挥⼿的最后⼀个 ACK 报⽂时,则会重发 FIN 关闭连接报⽂并等待新的 ACK 报⽂。

为什么 TIME_WAIT 等待的时间是 2MSL

1. MSL是 Maximum Segment Lifetime ,报⽂最⼤⽣存时间,它是任何报⽂在⽹络上存在的最⻓时间,超过这
个时间报⽂将被丢弃。
2. 等待MSL两倍:⽹络中可能存在发送⽅的数据包,当这些发送⽅的数据包被接收⽅处理后⼜会向对⽅发送响
应,所以⼀来⼀回需要等待 2 倍的时间。
3. 1 个 MSL 确保四次挥⼿中主动关闭⽅最后的 ACK 报⽂最终能达到对端;1 个 MSL 确保对端没有收到 ACK 重传的 FIN 报⽂可以到达。
4. 2MSL 的时间是从客户端接收到 FIN 后发送 ACK 开始计时的。如果在 TIME-WAIT 时间内,因为客户端的 ACK没有传输到服务端,客户端⼜接收到了服务端重发的 FIN 报⽂,那么 2MSL 时间将重新计时。

传输控制

重传机制

通过序列号和应答(ack)机制实现 

1、超时重传: 设定⼀个计时器,当超过指定的时间后,没有收到对⽅的确认ACK应答报⽂,就会重发该数据。

2.快速重传

当收到三个相同的ACK报⽂时,会在定时器过期之前,重传丢失的报⽂段。 

 

滑动窗⼝ 

发送放不用等ack,直接发送对面接受能力的报文。

窗⼝大小:是⽆需等待确认应答,可以继续发送数据的最⼤值。 
滑动窗口的控制:通常窗⼝的⼤⼩是由接收⽅的窗⼝⼤⼩来决定的。
累计确认:只要发送⽅收到了ACK700确认应答,就意味着700之前的所有数据「接收⽅」都收到了。

流量控制

TCP 流量控制的基本原理是使⽤滑动窗⼝机制

1. 接收窗⼝:接收⽅维护⼀个接收窗⼝,表示可以接收的数据段的范围。窗⼝⼤⼩可以根据接收⽅的处理能⼒进 ⾏调整。2. 通告窗⼝⼤⼩:接收⽅通过 TCP 报⽂中的确认信息,通告当前的接收窗⼝⼤⼩给发送⽅。发送⽅会根据这个 窗⼝⼤⼩来控制发送数据的速率。3. 窗⼝滑动:随着接收⽅处理数据的能⼒,窗⼝可以向前滑动。接收⽅可以通告更⼤的窗⼝,表示它可以接收更 多的数据。4. 发送速率控制:发送⽅会根据接收⽅通告的窗⼝⼤⼩来控制发送数据的速率。如果接收窗⼝变⼩,表示接收⽅ 的处理能⼒减弱,发送⽅会减慢发送速率,避免数据拥塞。5. 动态调整:TCP 流量控制是动态的,适应⽹络和接收⽅的变化。如果⽹络拥塞或接收⽅的处理速度变慢,流 量控制可以适时地减少发送速率。 

拥塞控制

拥塞控制通过 拥塞窗⼝ 来防⽌过多的数据注⼊⽹络

拥塞窗⼝ cwnd 是发送⽅维护的⼀个状态变量,根据⽹络拥塞程度⽽变化。
发送窗⼝的值是 swnd = min(cwnd, rwnd) ,也就是拥塞窗⼝和接收窗⼝中的最⼩值。
⽹络中没有出现拥塞,cwnd增⼤,出现拥塞,cwnd减⼩。

 过程

1. 慢启动:指数性的增⻓
2. 拥塞避免:超过阈值由指数增长变线性增长
3. 拥塞发⽣:超时重传:阈值变一半,重新慢启动快速重传: cwnd = cwnd/2;ssthresh = cwnd;进⼊快速恢复算法
4. 快速恢复1. 拥塞窗⼝ cwnd = ssthresh + 3 ( 3 的意思是确认有 3 个数据包被收到了);2. 重传丢失的数据包;3. 如果再收到重复的 ACK,那么 cwnd 增加 1;4. 如果收到新数据的 ACK 后,把 cwnd 设置为第⼀步中的 ssthresh 的值,原因是该 ACK 确认了新的数据,说明从 duplicated ACK 时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进⼊拥塞避免状态;

超时重传图

 

 快速重传与快速恢复图

TCP与UDP的区别

 

1、连接
TCP是⾯向连接的,在传输前需要三次握⼿建⽴连接。
UDP不需要连接,直接发送数据包,没有连接建⽴和关闭的过程。
2、服务形式
TCP是⼀对⼀的通信。在TCP连接中,⼀台客户端与⼀台服务器之间建⽴⼀条连接,进⾏双向通信。
UDP可以是⼀对⼀、⼀对多或多对多的通信。UDP是⽆连接的,⼀个UDP包可以被⼴播到多个⽬标主机,或
者从多个源主机接收UDP包。这使得UDP适⽤于多播和⼴播应⽤。
3、可靠性
TCP保证数据可靠交付,拥有确认应答和重传机制,⽆重复、不丢失、按序到达;
UDP尽可能交付,发送数据后不会关⼼数据包是否成功到达接收⽅,不会进⾏重传,不保证可靠性。
4、流量控制和拥塞控制
TCP拥有流量控制、拥塞控制,确保数据发送的速率不会超过接收⽅的处理能⼒,并防⽌⽹络拥塞。
UDP不进⾏流量控制和拥塞控制,数据发送的速率不受限制。
5、⾸部开销
TCP的⾸部⼤⼩通常为20字节,但在选项字段被使⽤的情况下,可能会更⼤。TCP⾸部包含源端⼝号、⽬标端
⼝号、序列号、确认号、窗⼝⼤⼩、校验和等字段。
UDP的⾸部⼤⼩固定为8字节。UDP⾸部包含源端⼝号、⽬标端⼝号、包⻓度和校验和字段(各16位)。
6、传输⽅式
TCP基于字节流,没有边界,但是保证传输顺序和可靠性;
UDP继承了IP层特性,基于数据包,有边界可能出现乱序和丢包。
7、分⽚⽅式
TCP数据⼤于MSS时会在TCP层将数据进⾏分⽚传输,到达⽬的地后同样在传输层进⾏合并,如果有某个⽚丢失则
只需要重传丢失的分⽚即可;
UDP数据⼤于MTU时会在IP层分⽚,则会在IP层合并,如果某个IP分⽚丢失,⽬标主机收到后,在 IP 层组装完数
据,接着再传给传输层。

IP 

分类 

 

特殊地址

主机号全0:表示该网络
主机号全1:表示该网络下所有主机
127.0.0.1:回环
一个网段主机数=2^主机号位数-2

 CIDR⽆分类地址

这种⽅式不再有分类地址的概念,32 ⽐特的 IP 地址被划分为两部分,前⾯是⽹络号,后⾯是主机号。 通过子网掩码确定网络号与主机号的位数。

IP分⽚与重组

 

NAT 

公网IP和内网IP转换

ARP 

获取下一跳的mac地址 

arp请求:
主机会通过⼴播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址。
当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包⾥的内容,如果 ARP 请求包中的⽬标 IP 地址与
⾃⼰的 IP 地址⼀致,那么这个设备就将⾃⼰的 MAC 地址塞⼊ ARP 响应包返回给主机。
操作系统通常会把第⼀次通过 ARP 获取的 MAC 地址缓存起来,以便下次直接从缓存中找到对应 IP 地址的 MAC 地
址。 不过,MAC 地址的缓存是有⼀定期限的,超过这个期限,缓存的内容将被清除。
路由表:

DHCP

子网内,由DHCP服务器给你分配IP 

ICMP 

查询报文和差错报文,查用的ping、返回路由节点

 

二层交换机

三层交换机

路由器 

OSI七层/TCPIP四层

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 与 D3.js 的对比:ECharts 在前端可视化中的优势与劣势
  • 数据库类型有哪些?
  • C++ Windwos 文件操作
  • 从0开始搭建自动化测试平台,构建自动化测试平台的最全指南!
  • 低代码开发技术在农村现代化中的应用探索
  • CSS学习14[重点]--定位、边偏移、定位模式
  • CompletableFuture.allOf() + join() 和 CountDownLatch 优缺点对比
  • 【SPIE独立出版,连续2届稳定EI检索!】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024,10月25-27)
  • 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
  • HarmonyOS学习(十)——网络编程
  • 经验笔记:在 TypeScript 中使用 Promise
  • Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题
  • 第六章 类和对象(6)
  • Unity Lua方向的面试真题详解
  • 容易中、见刊快的6本医学期刊推荐!
  • .pyc 想到的一些问题
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • es6要点
  • IndexedDB
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Median of Two Sorted Arrays
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • scala基础语法(二)
  • Shell编程
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 回顾 Swift 多平台移植进度 #2
  • 每天一个设计模式之命令模式
  • 面试遇到的一些题
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何解决微信端直接跳WAP端
  • 时间复杂度与空间复杂度分析
  • 使用parted解决大于2T的磁盘分区
  • 听说你叫Java(二)–Servlet请求
  • 微信小程序开发问题汇总
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我的zsh配置, 2019最新方案
  • 正则表达式
  • Java数据解析之JSON
  • NLPIR智能语义技术让大数据挖掘更简单
  • 大数据全解:定义、价值及挑战
  • #pragma预处理命令
  • $refs 、$nextTic、动态组件、name的使用
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (4)Elastix图像配准:3D图像
  • (9)STL算法之逆转旋转
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (差分)胡桃爱原石
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (第8天)保姆级 PL/SQL Developer 安装与配置