最后更新:2022-08-01 18:15:29 手机定位技术交流文章
我已经编写了50个计算机网络面试问题,每个问题都很经典,而且工厂也喜欢问问题。 相信大家完毕了,会有新的收获下降
想法: 这次面试问题主要考察了候选人是否掌握了HTTP状态代码的基本知识点.

无论是否有面试要求,我们都必须了解这些少数在日常发展中的地位守则的意义:

想法: 本课题主要研究了候选人,是否掌握HTTP请求方法这个基本知识点,我们使用了多于GET和 POST。


思路:这道题主要考察候选人,计算机网络体系结构这个基础知识点。计算机网路体系结构呢,有三层:ISO七层模型、TCP/IP四层模型、五层体系结构。大家可以记住这个图,如下

计算机网络体系结构
4.1ISO7层模型
ISO七层模型是国际标准化组织(International Organization for Standardization)制定的一个用于计算机或通信系统间互联的标准体系。
★”
应用程序层是网络服务与终端用户之间的接口。常见的协议是HTTP FTP SMTP SNMP DNS。
显示层: 数据表示 、 安全 、 压缩. 确保一个系统应用层发送的信息可以被另一个系统应用层读取.
会话层:建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话.
传输层: 定义传输数据的协议端口数,以及通过TCP UDP的流量控制和错误检查协议.
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择,协议有ICMP IGMP IP等.
数据链层:邻接节点之间的数据链建立在提供位流服务的物理层的基础上。
物理层: 建立, 维护和切断物理连接.
4.2TCP/IP四层模型
★”
应用程序层:与OSI参考模型(应用程序层、表示层、对话层)相符。
传输层:相应的OSI传输层为应用程序层实体提供端到端通信,确保包的序列传输和数据完整性。
网络层: 与OSI参考模型相符的网络层主要解决从主机到主机的通信问题.
网络接口层: 与OSI参考模型相对应的数据链接层和物理层.
五级系统结构
★”
应用程序层:与OSI参考模型(应用程序层、表示层、对话层)相符。
传输层:与OSI参考模型相对应的传输层
网络层:与OSI参考模型相对应的网络层
数据链层:OSI参考模型数据链层
物理层: 与OSI参考模型相对应的物理层.
想法:这个主题主要研究候选人是否理解HTTP协议,为什么它无状态,以及如何使它声明。
如何理解“无状态”这个词?
★当浏览器第一次发送请求给服务器时,服务器响应了;如果同个浏览器发起第二次请求给服务器时,它还是会响应,但是呢,服务器不知道你就是刚才的那个浏览器。简言之,服务器不会去记住你是谁,所以是无状态协议。
”
我们可以更好地理解和记住一个人生的例子:
有状态场景:
小红:今天吃啥子?
小明:罗非鱼~
小红: 味道怎么样?
小明: 很好. 味道很好.
无状态的场景:
小红:今天吃啥子?
小明:罗非鱼~
小红: 味道怎么样?
小明: 哦? 你是说什么? 什么鬼? 什么味道?
Http添加了Cookie:
小红:今天吃啥子?
小明:罗非鱼~
小红: 你今天吃了的罗芬鱼的味道怎么样?
小明: 很好. 味道很好.
思路:这道题主要考察的知识点是HTTP的请求过程,DNS解析,TCP三次握手,四次挥手这几个要点,我们都可以讲下。
DNS分析以找到域名的相应的IP地址。
通过三个握手与服务器建立TCP连接
向服务器发送HTTP请求
服务器处理请求并返回页面内容
浏览器分析和渲染页面
TCP波4次,连接终止

思考:本课题的主要考虑点是HTTP的几种版本之间的差异,我们记得HTTP/1是短的连接,可以强制打开,HTTP/1.1是默认的长连接,HTTP/2几乎就像使用多个路径一样。
HTTP/1.0
默认情况下,使用短接口,每个请求需要一个TCP接口Connection: keep-alive这个字段允许您打开一个长连接。
HTTP/1.1
引入持久连接,即TCP连接不被默认禁用,可以通过多个请求撤销。
阻塞传输编码意味着服务端不会生成单个数据,而是发送一个数据,用流模式取代缓存模式。
管道机制意味着客户端可以在同一TCP连接中同时发送多个请求。
HTTP/2.0
两步协议:1.版本1的头条是文本(ASCII编码),数据体可以是文本或二进制;2.在0中,头部信息和数据体是二进制。
完全多路径复制,客户端和浏览器可以在单一连接中同时发送多个请求或响应,而不必按照顺序相匹配。
标题压缩,HTTP协议没有状态,每个请求必须包含所有信息。 Http/2.0引入了标题信息压缩机制,然后用gzip或压缩压缩发送。
服务端传送允许服务器发送资源给客户端,而不需请求。
本文的主要研究对象是 POST 和 GET 的区别,这些区别可以从数据包、编码方法、请求参数、签名收集、历史记录、安全等等来回答。
![]()
这个问题记住keep-alive就好,也就是说,在HTTP中响应体的Connection字段指定为keep-alive即可
思考:本课题实际上是考察电缆长途连接的知识点,长 HTTP 连接指长 TCP 连接。至于什么时候超时,让我们记住以下参数:tcp_keepalive_time,tcp_keepalive_probes
什么是长时间的HTTP连接?
HTTP分为长连接和短连接,本质上说的是TCP的长短连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才具有真正的长连接和短连接这一说法哈。
TCP长连接可以复用一个TCP连接,来发起多次的HTTP请求,这样就可以减少资源消耗,比如一次请求HTML,如果是短连接的话,可能还需要请求后续的JS/CSS。
如何设置长连接?
通过在请求和响应头(请求和响应头)设置连接字段为keep-alive"HTTP/1".0协议支持,但默认是禁用,从HTTP/1.After 1,连接是默认的长连接。
什么时候会随着时间的推移?
★”
HTTP一般会有httpd守护进程,里面可以设置keep-alive timeout,当tcp连接闲置超过这个时间就会关闭,也可以在HTTP的header里面设置超时时间
TCP的保持生命包含三个参数,在ipv4中支持的系统.set内核的网络;在TCP连接后,idle tcp_keepalive_time,则会发生侦测包,如果另一方没有收到ACK,然后每次重复tcp_keepalive_intvl,直到tcp_keepalive_probes发送,就会丢弃该连接。
思路:这道题实际上考察的知识点是HTTP与HTTPS的区别,这个知识点非常重要,可以从安全性、数据是否加密、默认端口等这几个方面去回答哈。其实,当你理解HTTPS的整个流程,就可以很好回答这个问题啦。
我的答案如下:
HTTP,即超文本传输协议,是一个基于TCP/IP通信协议来传递明文数据的协议。HTTP会存在这几个问题:
请求信息是书面传送的,并且很容易通过窃听截获。
没有核实对方的身份,有可能被欺骗
数据的完整性不受检查,可以由中间人轻松操作
为了解决HTTP存在的问题,HTTP出现了。
Https是什么?
HTTPS = HTTP+SSL/TLS,可以理解为 HTTP with Secure Socket Layer (SSL)。
它们主要区别如下:

知识点是HTTPS的工作流程。我们需要回答这些问题:公共和私人密钥、数字证书、加密、对称加密和非对称加密。
HTTPS = HTTP + SSL/TLS,即使用SSL/TLS加密和解密数据,以及HTTP用于传输。
SSL,即Secure Sockets Layer(安全套接层协议),是网络通信提供安全及数据完整性的一种安全协议。
TLS,即Transport Layer Security(安全传输层协议),它是SSL3.0的后续版本。

Https工作流程
客户端启动HTTPS请求并连接到服务器的443个端口。
服务器必须有一套数字证书(包括公共钥匙、颁发证书机构、有效期日期等)。
服务器向客户端发送自己的数字证书(公共密钥位于证书内部,私人密钥由服务器持有)。
在接收数字证书后,客户端将验证证书的有效性。 如果证书被验证,将生成一个随机的对称键,与证书的公共键加密。
客户端将加密的公共密钥发送到服务器上.
服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥,然后用客户端密钥对返回数据进行对称加密,酱紫传输的数据都是密文啦。
服务器将加密的消息返回到客户端.
当客户端接收数据时,它通过自己的密钥对称地解密并接收服务器返回的数据。
该测试的知识点也包括HTTP状态代码, 302和301都有重新引导的含义,但它们也不同。
301:(永久转移)请求的页面被永久移到一个新的位置。 当服务器返回此响应时,它自动将请求者重新定位到一个新的位置。
302:(临时转移)服务器目前正在响应来自不同地点的网页请求,但请求者应该继续使用原来的位置来进行后续请求。 这个代码类似于301代码,它响应GET和HEAD请求并自动移动请求者到不同地点。
在互联网上有一个非常可视的隐喻例子:
★当网站或网页在24至48小时内临时迁移到新址时,现在是302跳跃的时候了,打个比方说,我有一套房子,但最近我去了亲戚家,呆在亲戚家,过两天我还回来的。而使用301个跳跃的场景是以前的现场,因为某些原因需要被删除,然后访问新的地址,是永久性的,例如,你的套房实际上是出租的。现在租期到了,你在别的地方找到房子,以前我租的那幢房子是耐不住的.
”
想法:这个考试的知识点不仅仅是数字签名,数字证书,而且面试官可能会问你关于 https 原则,因为 https 原则与数字证书有关,每个人都需要了解 https 原则。
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。它的出现,是为了避免身份被篡改冒充的。比如Https的数字证书,就是为了避免公钥被中间人冒充篡改:

数字证书构成
公共鍵和個人的資訊由Hash Summary Algorithm加密以形成消息摘要;消息摘要被送往一個公信的認証中心(CA),其私人鍵被加密以形成數位署名。
公共钥匙和个人资料, 数字签名, 构成数字证书.
概念: 本课题的知识点是对称加密和不对称加密算法. 对称加密和不对称加密是什么?
对称加密:指加密和解密使用同一密钥,优点是运算速度较快,缺点是如何安全将密钥传输给另一方。常见的对称加密算法有:DES、AES等。

![]()
对称加密
不对称加密(Asymmetric encryption)指使用不同的密钥加密和解密(即公共密钥和私钥)。 公共密钥和私钥存在成对,只有相应的私钥可以被解密,如果数据与公共密钥加密。

非对称加密
思路:这道题考察的知识点是DNS域名解析,http请求的过程,是涉及到DNS域名解析的,这道面试题也挺经典的,大家可以看下《图解HTTP》那本书哈。
★DNS,英文全称是domain name system,域名解析系统,是Internet上作为域名和IP相互映射的一个分布式数据库。它的作用很明确,根据域名可以找到相应的IP地址。如何在浏览器缓存、本地DNS服务器、根域服务器中搜索,答话后,每个人都可以问好.
”
以下图示了DNS的分析过程:

DNS解析查找过程
假设你要查询www.baidu.com的IP地址:
★”
首先会查找浏览器的缓存,看看是否能找到www.baidu.com对应的IP地址,找到就直接返回;否则进行下一步。
向本地DNS服务器发送请求,如果发现,直接返回请求,否则继续下一步;
本地DNS服务器将请求发送到根域服务器,而根域服务器则返回责任
.com顶级域名服务器的IP地址列表。本地DNS服务器再次对其中一个负责
.com高级域名服务器发送请求并返回负责.baidu授权域名服务器的IP地址列表。本地DNS服务器再向其中一个权威域名服务器发送一个请求,返回www.baidu.com所对应的IP地址。
思路:这道题考察的知识点是CSRF攻击,它是属于网络安全这块的知识点,还有Xss攻击、SQL注入、DDoS等这些常见的网络攻击,我们都需要知道攻击的流程哈。
什么是CSF攻击?
★跨站请求伪造(英语:Cross-site request forgery, CSRF)是一种旨在防止用户在当前登录的Web应用程序上进行不意行为的攻击方法。
”
CSRF的攻击如何?
让我们看看百度百科全书哈的一个例子:

汤姆在没有退出的情况下登录到银行,浏览器包含了关于汤姆在银行的识别信息。
黑客杰瑞将在邮件中提出伪造的转移请求
汤姆在登录银行网站的同时浏览文章
将伪造的转帐请求连同核证资料发送到银行网站
银行的网站看到身份验证信息,认为这是汤姆合法的操作,最终导致汤姆的财政损失。
如何解决CSF攻击?
检查向导字段。
添加测试符号。
为了让大家更容易记住, 让我画一个思想指南, 如下:

思考: 这是一个相对基本的知识点, 经常有朋友会搞糊涂.
接口实际上相当于IP地址+端口+协议.
★具体而言,Socket是一个包含高级别的TCP/IP并屏蔽网络细节的标准集,为开发者提供更好的网络编程。
”
WebSocket是一个带有H5的持久协议,用于解决 http 不支持持久连接的问题。
索克1是网络编程的标准接口,而WebSocket是应用程序级通信协议。
想法:这是一个与网络安全有关的知识点,DDOS也是相当常见,例如SYN Flood。
★”
DOS: (Denial of Service),翻译过来就是拒绝服务,一切能引起DOS行为的攻击都被称为DOS攻击。最常见的DoS攻击就有计算机网络宽带攻击、连通性攻击。
DDoS: (Distributed Denial of Service), 译为分布式拒绝服务。它的意思是多个攻击者在不同的位置同时攻击一个或多个目标。或者攻击者控制在不同地点的多个机器,并使用这些机器同时攻击受害者。常见的DDos有SYN Flood、Ping of Death、ACK Flood、UDP Flood等。
DRDoS: (Distributed Reflection Denial of Service),中文是分布式反射拒绝服务,该方法依靠发送大量带有受害者IP地址的包到攻击者主机,然后攻击者会对IP地址源作出大量反应,这会造成拒绝服务攻击。
思考:XSS攻击也比较常见,XSS,叫跨站脚本攻击(Cross-Site Scripting),因为它可以与 cascading style sheets(CSS)混淆,因此,跨站脚本攻击被缩写为XSS。这意味着恶意攻击者将恶意HTML代码插入网页,当用户浏览网页时,网页内嵌入的html代码将被执行,从而达到对用户恶意攻击的特殊目的。XSS攻击通常分为三个类型:存储、反射和DOM XSS
21.1 XSS如何受到攻击?
以反射型为例,流图如下:

21.2如何解决XSS攻击问题?
对输入进行过滤、过滤标签等,仅允许对合法值进行过滤。
HTML转义
对于链接跳转,如<a href="xxx"等待, 检查内容, 禁止以脚本开始的非法链接.
限制输入长度
思考:HTTP请求,一个非常,非常基本的知识点,必须掌握。 事实上,我认为它有点像浏览器地址栏输入url来显示主页。
我的答案如下:
HTTP是一个基于TCP/IP协议来传递数据的超文本传输协议,传输的数据类型有HTML,图片等。以访问百度有例子,看下一次Http的请求过程吧

Http请求过程
客户端分析DNS域名,获取相应的IP地址
根据此IP,找到相应的服务器建立连接(三个握手)
在建立TCP连接后启动HTTP请求(完整的http请求声明)
服务器响应HTTP请求,客户端获取HTML代码
客户端使用HTML代码中的资源(如js、css、图像等)来分析HTML代码和渲染网页。
服务器关闭TCP连接(四手)
思路:这道题有点偏Java web方向的。以前记得刚出来实习找工作的时候,面试官可喜欢问这道题啦,当时我记的答案就是,forward是转发,redirect是重定向。
我的答案如下:
★”
直接转发方式(Forward),客户和浏览器只发送一个请求,服务、HTML、JSP或其他信息资源,应要求第二个资料资源,在请求对象请求中,保存的对象为每个信息资源共享。
间接转发方式(Redirect)实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。
举个通俗的例子:
★”
直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;
间接转移相当于:"A找到B借钱,B说不,让A找到C借钱"**。
下面的两个图表使它更容易理解:
转调工作原则:

前进工作原则

概念:SQL注入是最经典的安全问题,无论你是前端开发者还是后端开发者,你必须掌握它。
★SQL注入是一种代码注入技术,它通常用于攻击网络应用程序。它通过Web应用程序接口传递一些特殊数字,来欺骗应用服务器,执行恶意SQL命令,为了获取非法系统信息。目前它是黑客攻击数据库的最常见的手段之一。
”
24.1SQL注射如何受到攻击?
一个常见的业务场景是将雇员的名字输入网页表格的搜索框,然后在页面后面查询该雇员的相应名称。

在这种情况下,通常是前面的页面将一个名称参数名称传递到后端,然后后端通过SQL查询结果
因为SQL是直接拼写的,如果我们完全信任前端传递的参数,如果前端传递这样的参数'' or '1'='1'SQL变为酸紫色。
这个SQL会把所有的员工信息全都查出来了,酱紫就请求用户已经越权啦。请求者可以获取所有员工的信息,信息已经暴露了啦。
24.2如何防止SQL注入问题
1). 使用#{}而不是${}
在MyBatis中,使用#{}而不是${}在很大程度上可以防止SQL插入。
因为#{}它是一个参数占用器,它自动添加“”字符串类型,而不添加其他类型。 因为Mybatis使用预编译,随后的参数不会再被SQL编译,因此在某种程度上防止SQL插入。
${}一个简单的字符串替换,字符串是什么,它将被分析到什么方面,并存在SQL注入风险
2)不要暴露不必要的日志或安全信息,例如避免直接响应某些SQL例外。
如果SQL发生异常了,不要把这些信息暴露响应给用户,可以自定义异常进行响应
3.不信任任何外部输入参数,过滤参数包含一些数据库关键字
你可以添加一个参数来检查过滤方法,过滤union,or等数据库关键词
(四)有关当局的控制
在你查询信息时,检查当前用户是否有此权限。比如说,实现代码的时候,可以让用户通过企业ID什么,或获取当前用户的会议信息,等等,在查询前,首先检查当前用户是否属于这个企业,等等。如果是, 雇员有权询问.
让我们先看一下 Session 和 Cookies 的概念:
cookie是存储在客户端的一个小文本字符串的数据。当客户端向服务器发起请求时,服务器向客户端发送一个cookie,客户端存储 cookie.当客户端下一次重启向同一服务器请求时,Cookie被携带发送到服务器。服务器被这个cookie识别。
会话是指服务器与客户端之间的会话的过程。如果会议使用Cookie来处理信息,当用户第一次提出请求时,服务提供者在用户浏览器上创建一个cookie,当会议结束时,这意味着这块饼干已经过时了。会议对象存储特定用户会议所需的属性和配置信息。
Session 和 Cookies 之间 的 主要 区别 是 :
![]()
来看个图吧:
![]()
★”
当用户第一次请求服务器时,服务器基于用户提交的信息,创建相应的会议,请求时将该会话的唯一标识符 session ID 返回到浏览器上,在浏览器收到服务器返回的សម័យID信息后,这些信息将存储在cookie中,同时, cookies 记录该 SessionID 属于哪个域。
当用户第二次访问服务器时,请求将自动确定此域下是否有cookie信息,如果存在, Cookies 也 将 自动 发送 到 服务 端,服务端将从cookie中获取សម័យID,再根据 SessionID查找对应的 Session信息,如果没有找到,表示用户未登录或登录失败,如果发现用户已登录,可以执行下列操作。
一般认为IP地址=网络号码+主机号码。
网络号码: 它标记与主机连接的网络地址,以表明该网络属于互联网.
主机号码: 它标记主机地址,表明它属于网络中的哪一个主机.
IP地址分为五个类别A、B、C、D和E:
类A地址(1–126):从0开始,网络号码在前面8,主机号码在后面24。
B类地址(128–191):从10开始,网络号为16位元前,主机号为16位元后。
C类地址(192–223):从110开始,网络编号为24字节前,主机编号为8字节后。
D类地址(224–239):从110开始,保留多播地址。
E-类地址(240~255):从110开始,留给将来使用

IP地址分类
地址分辨协议(Address Resolution Protocol,ARP)是一种用于将IP地址映射到MAC地址的协议。
★”
首先,每个主机在自己的ARP缓冲器中创建一个ARP列表,以显示IP地址和MAC地址之间的相关关系。
当源主机需要向目标主机发送包时,首先检查一下你自己的ARP列表,是否存在与IP地址相符的MAC地址;若存在,则直接向该MAC地址发送数据包;若不存在,则向本地网络段发送广播包的ARP请求,为此目的,查询主机的MAC地址。在ARP请求数据包中,包括源主机的IP地址、硬件地址和目标主机的IP地址。
在网络中的所有主机收到ARP请求后,检查包中的目标IP是否匹配其自己的IP地址。如果不相同,将忽略此包;如果相同,主机首先将发送器的MAC地址和IP地址添加到其自己的ARP列表中,如果IP信息已存在ARP表中,则将其覆盖,然后向源主机发送ARP响应包,告诉对方它需要寻找的MAC地址。
源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
★”
简言之,在网络中识别计算机通常是IP地址和MAC地址,但计算机的IP地址可以由用户自己更改,管理起来相对困难,MAC地址也无法更改,因此一般用于将IP地址和MAC地址结合起来。
没有IP地址线,不能只使用MAC地址吗?不行的!因为 MAC地址第一次出现,他们当时没有使用IP地址,只用MAC地址,后来,随着网络中越来越多的设备,整个路由过程变得越来越复杂,然后出现了一个子网的概念。对于其他子网络中具有目的地地址的数据包,路由器只发送包到该子网.
那么为什么使用IP地址呢?因为IP地址是地理上相关的,对于同一个子网络上的设备,IP地址的前缀是相同的,这样,路由器可以通过IP地址的前缀知道该设备在哪个子网络上,如果你只使用MAC地址,路由器需要记住每个MAC地址在哪个子网络上,这需要路由器的大量存储空间,是无法实现的。
IP地址可以与地址相比较,MAC地址是接收者,在一个通信过程中,两者都无法使用。
基于TCP的应用程序层协议是:HTTP、FTP、SMTP、TELNET、SSH
HTTP: HyperText Transfer Protocol,默认端口80
FTP: File Transfer Protocol (文件传输协议), 默认端口(20用于传输数据,21用于传输控制信息)
SMTP: Simple Mail Transfer Protocol (简单邮件传输协议) ,默认端口25
TELNET: Teletype over the Network (网络电传), 默认端口23
SSH:Secure Shell(安全外壳协议),默认端口 22
基于UDP的应用程序层协议: DNS, TFTP, SNMP
DNS: Domain Name Service (域名服务),默认端口 53
TFTP: Trivial File Transfer Protocol (简单文件传输协议),默认端口69
SNMP:Simple Network Management Protocol(简单网络管理协议),通过UDP端口161接收,只有Trap信息采用UDP端口162。
除了等待时间表之外,TCP 还有一个保活计时器(keepalive timer)。设想下面的场景: 客户端已主动建立与服务器的TCP连接.但客户主机突然崩溃了。显然,服务器不再能够接收客户端发送的数据。因此,应该采取措施阻止服务器等待.这需要使用生命计时器。
每次服务器接收客户端的数据,重新设置生命计时器,时间设置通常是两小时。如果客户没有收到数据两个小时,服务端发送检测信息,后来,每75秒发一次。如果在连续10段检测后仍未收到客户响应,服务端认为客户有故障,然后关闭连接。
让我们先看一下TCP的四个波浪

由客户端发送到服务器接收FIN之后,TCP协议堆自动发送ACK,然后输入CLOSE_WAIT状态。
但是如果服务器端不执行socket的close()操作,那么就没法进入LAST_ACK,导致大量连接处于CLOSE_WAIT状态
因此,如果服务器有大量的CLOSE_WAIT状态,通常是 ProgramBug,或者关闭插座是不及时的。
统一资源标识符(英语:Uniform Resource Identifier,简称URI)是统一资源标识符的中文翻译,其主要功能是识别一个资源。
URL,全称是Uniform Resource Location),中国翻译是一个统一的资源定位器,主要作用是提供资源的路径。打个经典比喻吧,URI像是身份证,只能识别一个人,而URL更像一个家庭地址,这个人可以通过URL找到。
ICMP,Internet Control Message Protocol ,Internet控制消息协议。
ICMP协议是传输错误报告控制信息的非连接导向协议。
它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。
当IP数据无法到达目标时,IP路由器不能以当前传输速度传输数据包时,则会自动发送ICMP消息。
例如,我们每天使用更多基于ICMP的 ping。
★ping,Packet Internet Groper,这是一个互联网包探测器,测试网络连接数量的程序.Ping是一个服务命令,用于TCP/IP网络架构的应用程序层。 主要是向特定的目的主机发送ICMP(Internet Control Message Protocol 因特网报文控制协议) 请求报文,测试站点是否可访问,并了解其相关状态
”
一般来说, ping可以用于检测网络故障。ICMP按协议工作。 假设机器Aping机B,工作过程如下:
ping通知系统,一种新的固定格式ICMP请求包
ICMP协议将目标机器B的包和IP地址合并,并将其转移到IP协议层
IP层协议将主机IP地址作为源地址,机B的IP地址作为目标地址,并添加一些其他控制信息来构建IP数据包
首先获取目标机器B的MAC地址。
数据链层构建了一个数据框架,目标地址是向IP层传递的MAC地址,源地址是机器的MAC地址
当机器B接收它时,它将目标地址与其自己的机器的MAC地址比较,以查看它是否与处理返回匹配,是否与丢弃匹配。
为计算返回时间,根据目标由主机返回的ICMP答复消息的时戳计算
最终显示结果有这几项:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、往返时间的最小、最大& 平均值
思考: TCP连接的三手机制,最重要的知识点,必须发生,并且必须记住通信过程和客户端和服务器的相应状态。
TCp提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的就是同步连接双方的序列号和确认号并交换TCP窗口大小信息。我们一起来看下流程图哈:

TCP三次握手
第一个握手(SYN=1, seq=x),然后客户端进入SYN_SEND状态
第二个握手(SYN=1, ACK=1, seq=y, ACKnum=x+1),然后服务器端进入SYN_RCV状态。
在第三次握手(ACK=1, ACKnum=y+1)之后,客户端在发送后进入STABLISHED状态,当服务器接收包时,它进入STABLISHED状态。
想: 为什么不能两次握手?为什么不四次?为了方便理解,例如,我们爱上男孩和女孩:两个人可以聚在一起,最重要的是爱。就是我爱你,并且我知道,你也爱我,现在我们将模拟三个手的过程:

你为什么不两次握手?
如果女孩只是两次握手,她可能不知道,她说我也爱你,男孩是否接受,关系不会愉快地发展。
你为什么不能四次握手?
因为握手不能是四次呢?因为三次已经够了,三次已经能让双方都知道:你爱我,我也爱你。而四次就多余了。
思考:TCP的四个握手也是最重要的知识点,通常与三个握手一起,并且必须记住。

TCP四次挥手过程
在第一波(FIN=1, seq=u)之后,客户端在发送后进入FIN_WAIT_1状态。
在第二波(ACK=1, ack=u+1, seq =v)之后,服务器最终进入CLOSE_WAIT,客户端收到这个确认包并输入 FIN_WAIT_2.
在第三波(FIN=1, ACK1, seq=w, ack=u+1)之后,服务器最终处于LAST_ACK状态,等待客户端的最后ACK。
第四波(ACK=1,seq=u+1,ack=w+1),客户端从服务器端收到关闭请求,发送一个确认包,并输入 TIME_WAIT状态,等待一个固定的时间(两个最大寿命周期,2MSL,2 Maximum Segment Lifetime)之后,没有服务器端的ACK接收,考虑到服务器端正常关闭了连接,于是他自己关闭了联系,进入封闭状态。服务器端收到此确认包后,关闭连接,进入封闭状态。
思考:为什么TCP应该波动四次?为了让每个人更容易理解,让我们举一个生活例子。
★小明和小红打电话聊天,当电话即将结束时,小红说,”“我没话要说。小明回答,“我知道了”。但小明可能还有别的话要说,小红不能叫小梅按自己的节奏完成电话,也许小明又说了些什么,最后小明说,“我说完了”,小红回答,“我知道了”,这样通话才算结束。
”

老板太懒了,不能写太多字。 这个文章已经译成PDF了,如果你需要朋友可以免费给我写!
本文由 在线网速测试 整理编辑,转载请注明出处。