简单计算机网络概念

news2024/11/18 1:23:20

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四层

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows子系统Ubuntu安装MySQL及windows的navicate连接

Windows子系统Ubuntu安装MySQL及局域网连接 MySQL8.0之前 mysql8.0版本

证件照背景替换软件有哪些?证照之星怎么换背景色

在照相馆拍的证件照不满意,自行在家拍摄了证件照,却不会处理复杂的照片背景怎么办呢?其实可以使用专业软件来替换证件照背景。这篇文章就告诉大家证件照背景替换软件有哪些,证件照背景替换怎么弄。 一、证件照背景替换软件有哪些…

4千6历年高考英语试题大全ACCESS\EXCEL数据库

《历年高#考英语试题大全ACCESS数据库》搜集了大量的全#国各#地高#考英语模拟试题,每道题目均有相应的答案和解析;这种数据虽然没有《一站到底》类的数据结构(一个选项一个字段)那么好,但是通过技术人员还是可以很简单…

基于SSM的图书馆管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的图书馆管理系统7拥有两种角色:管理员和用户 管理员:图书管理、类型管理、借阅管理、续借管理、归还管理、罚金管理、留言管理等 学生用户:借…

前端速通面经八股系列(八)—— React篇(上)

React目录 一、组件基础1. React 事件机制2. React的事件和普通的HTML事件有什么不同?3. React 组件中怎么做事件代理?它的原理是什么?4. React 高阶组件、Render props、hooks 有什么区别,为什么要不断迭代5. 对React-Fiber的理解…

眼科市场格局固化,排名靠后的光正眼科还能逆袭吗?

眼科是A股的热门领域,也是医疗的黄金赛道。或许也正因为如此,这条赛道已经习惯了通过并购,利用资本杠杆跑马圈地。以最大规模的龙头爱尔眼科为首,并购是眼科的常规操作。 然而,真正观察赛道腰部及以下的公司&#xff…

十八、计算机视觉-canny边缘检测

文章目录 前言一、canny检测的流程1.高斯滤波(Gaussian Smoothing)2.梯度计算(Gradient Calculation)3.非极大值抑制(Non-maximum Suppression)4.双阈值检测(Double Thresholding)5.…

6、Flume安装

按照采集通道规划,需在hadoop102,hadoop104两台节点分别部署一个Flume。可参照以下步骤先在hadoop102安装,然后再进行分发。 1. Flume安装部署 1.1 安装地址 (1) Flume官网地址:Welcome to Apache Flume…

COCI2016-2017#1 Kralj

目录 COCI2016-2017#1 Kralj题目描述背景输入输出数据范围 题解解法 打赏 COCI2016-2017#1 Kralj 题目描述 背景 精灵王将 n n n个精灵编号为 1 , ⋯ , n 1 , \cdots , n 1,⋯,n,矮人王将 n n n个矮人围成一个圆环,从某个矮人开始顺时针编号为 1 , ⋯…

Mysql高级篇(中)——SQL性能分析

Mysql高级篇(中)—— SQL性能分析 一、(了解)MySQL Query Optimizer 的主要功能和原理二、(了解)MySQL 常见瓶颈三、关键字 EXPLAIN1、是什么2、基本语法3、EXPLAIN 执行信息详解(1&#xff09…

Windows--linux共享文件夹

1、如果共享文件夹设置在Windows上面 文件夹设置 个人家里电脑通常不设置用户名密码 linux端mount命令行 mount -t cifs -o usernamewade,vers3.0 //192.168.0.143/openvswitch-2.17.10 /root/windows

计算机专业选题推荐-基于python的岗位兼职招聘平台【python-爬虫-大数据定制】

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的岗位兼职招聘平…

我的第3个AI项目-Advanced RAG with Gemma, Weaviate, and LlamaIndex

目录 一、项目简介概述时间kaggle地址(代码和详细注解)主要工作和收获技术栈数据集结果 二、bug修复在 Kaggle 使用模型时需要先同意该模型的使用条款使用 GPU 时显存不足把 Weaviate 从V3升级到V4改动一:创建client改动二:判断某…

网络编程day02(字节序、TCP编程)

目录 【1】字节序 1》大小端转换 2》端口转换 3》IP地址转换 主机字节序转换为网络字节序 (小端序->大端序) 网络字节序转换为主机字节序(大端序->小端序) 【2】TCP编程 1》流程 2》函数接口 1> socket 2> …

免费的 Mac 应用清理工具Pearcleaner v3.8.6

免费的 Mac 应用清理工具。这是一款免费开源的 Mac 应用清理工具,能够彻底卸载应用并清理残留文件。它采用 SwiftUI 开发,提供了简单易用的界面,支持右键卸载、迷你模式和 Homebrew 清理等功能。 下载链接:https://pan.quark.cn/s…

【Visual Studio 报错】vs 在使用二进制写入文件时弹窗报错:使用简体中文 gb2312 编码加载文件

如以下报错 解决办法 解决方法:文件->高级保存选项->将文件编码形式改为“UTF-8带签名” 若找不到高级保存选项,可以跟着下面路径把该选项调出来 :工具->自定义->命令->菜单栏中改成文件->预览右边点添加命令->类别中…

BRAM IP Native模式使用

简介 BRAM(‌Block RAM)是‌FPGA(Field-Programmable Gate Array)中的一种专用RAM资源,固定分布在FPGA内部的特定位置。该内容主要对BRAM(Block RAM”的缩写)Native模式下IP界面做详细描述和使用…

C语言进阶版第9课—指针(3)

文章目录 1. 字符指针变量2. 数组指针变量3. 二维数组传参的本质4. 函数指针变量5. typedef关键字6. 函数指针数组7. 函数指针数组的应用—转移表 1. 字符指针变量 练习题 2. 数组指针变量 在学习数组指针前,我们先回忆一下什么是指针数组指针数组 → 存放指针的数…

基于单片机的人脸识别的智能门禁系统设计

文章目录 前言资料获取设计介绍功能介绍设计清单核心代码具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等…

Unity Addressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在…