1、tcp的三报文握手

注意:
seq=x:序号,表示本次报文段发送的数据的第一个字节序号为x
ACK=1:表示ack确认号有效,ACK报文不携带数据不消耗序号
ack=x+1:表示 <= x 个字节已经收到,下一次期望收到的第一个字节序号是第x+1个
SYN=1:表示这是一个连接请求或者连接接受报文
面试-网络基础

步骤:

  1. 首先一开始客户端和服务端都处于close状态
  2. 客户端A要请求建立连接,A主动打开连接,B是被动打开连接;
  3. B打开连接后,会创建TCB(传输控制块)用于保存连接信息,然后B处于listen状态
  4. A打开连接也会创建TCB,然后在打算建立连接时,会发送连接请求报文,(SYN=1,seq=x的报文),TCP规定,SYN报文段不携带数据,但要消耗一个序号,这时客户端进入SYN-SENT(同步已发送)状态
  5. B收到连接请求报文后,如果同意建立连接,会向A发送确认,在确认报文段中将SYN=1、ACK=1、seq=y、ack=x+1,同样SYN报文不携带数据,但消耗一个序号,这时服务端B进入SYN-RCVD(同步收到)状态
  6. 客户端A收到B发送的确认报文段后,还要再向B给出确认,确认报文段的ACK=1、ack=y+1、seq=x+1,这时tcp连接已经建立,客户端A进入ESTAB-LISHED(已建立连接)状态
  7. 服务端B收到A的确认报文后也进入ESTAB-LISHED状态

2、四报文握手

面试-网络基础

3、为什么是3次握手而不是2次握手?

为了防止已失效的连接请求报文突然又发送到服务端B,从而产生错误。

异常情况:
当客户端A第一次发送的请求连接因为网络原因,延迟到达服务端B,这是一个本该失效的请求连接,但是B却误以为这是A发送的请求连接,所以B会回A一个确认报文,如果没有第三次握手,这时B在回A一个确认报文之后,连接就建立了,但是A收到B发送的确认报文并不会理睬,因为A没有请求建立连接,A也不会发送数据,这时B就傻傻的在等A发送数据,可是并不会,建立连接会占用B一定的服务器资源,这就导致B的服务器资源被白白浪费了。
如果采用三报文握手,A在收到B的确认报文后,不会回B确认报文,B收不到确认,就知道A并没有想要建立连接,也就解决了上述异常情况。

4、四次挥手

注意:
FIN=1:表示这是一个连接释放报文,即使不携带数据也会消耗一个序号
MSL:报文在网络中存活的最长时间
面试-网络基础

步骤:

  1. 首先客户端A和服务端B都处于已建立连接状态,进行数据的传输
  2. 如果没有数据传输,这时A的应用进程发出连接释放报文段,并同时发送数据,主动关闭连接,发送的报文FIN=1、seq=u,u表示A已发送的数据的最后一个字节序号+1,这时A进入FIN-WAIT-1(终止等待1) 状态;
  3. B收到A的请求释放连接报文后,回了A一个确认报文,报文首部(ACK=1、seq=v、ack=u+1),B进入CLOSE-WAIT(关闭等待)状态,此时tcp服务器进程通知其高层应用进程,A->B这个方向的连接已经释放,这时的tcp处于(half-close)半关闭状态。A收到B的确认报文后A进入FIN-WAIT-2(终止等待2)状态,等待B发送的请求释放连接报文;
  4. 当B没有事干了,就发送释放连接报文给A,B进入LAST-ACK(最后确认)状态,报文头部信息(FIN=1、ACK=1、seq=w、ack=u+1),seq=w表示在等待期间,B可能发送了数据给A,所以序号可能会改变。A收到B的请求释放连接报文后,A发送确认报文给B(ACK=1、seq=u+1、ack=w+1),A进入TIME-WAIT(时间等待)状态
  5. B收到A的确认报文后进入CLOSE状态,A等待2MSL时间后也进入CLOSE状态,相应的TCB(传输控制块)会被撤销,就结束了本次连接。

5、为什么A在TIME-WAIT状态要等待2MSL?

  1. 为了确保A最后发送的ACK报文能被B接收到。
    最坏的情况是A发送了ACK报文给B,B等待了1MSL没有收到报文,然后超时重传FIN+ACK报文,FIN+ACK报文发送给A的最大时间是1MSL,这两个时间加起来恰好是2MSL。

  2. 等待2MSL时间,本次连接的所有报文都会从网络上消失,不会出现已失效的连接请求报文段

6、OSI、TCP\IP、五层协议及其作用和协议

OSI:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP\IP:应用层、运输层、网际层、网络接口层
五层协议:应用层、传输层、网络层、数据链路层、物理层

每层的协议:

  • 物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)
  • 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
  • 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
  • 传输层:TCP、UDP、SPX
  • 会话层:NFS、SQL、NETBIOS、RPC
  • 表示层:JPEG、MPEG、ASII
  • 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

每一层的作用如下:

  • 物理层:通过媒介传输比特,确定机械及电气规范(比特Bit),利用传输介质为上一层提供物理连接。
  • 数据链路层:将比特组装成帧和点到点的传递(帧Frame),在相邻的两个节点间无差错的传输以帧为单位的数据;
  • 网络层:负责数据包从源到宿的传递和网际互连(包PackeT),进行逻辑寻址,实现不同网络之间的路径选择;
  • 传输层:提供端到端的可靠报文传递和错误恢复(段Segment);
  • 会话层:建立、管理和终止应用程序间的会话(会话协议数据单元SPDU),建立数据传输的通路;
  • 表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU);
  • 应用层:允许访问OSI环境的手段(应用协议数据单元APDU),与用户进行交互,将数据交给其下面的层次来处理。

7、TCP与UDP

TCP(传输控制协议)是一种可靠的、面向连接的、基于字节流的传输层通信协议。
UDP(用户数据报协议)提供了一种无须建立连接,就能发送封装IP数据包进行传输的方法,它是不可靠的,无需建立连接的、基于数据包的传输层通信协议。

区别:

区别 TCP UDP
连接 面向连接 无需建立连接
可靠性 可靠 不可靠
有序性 有序 无序
速度
拥塞控制和流量控制
首部大小 20字节 8字节
传输单位 面向字节流 面向报文

8、各协议介绍

  • ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
  • TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
  • HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
  • DHCP协议: 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。
  • NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
  • DHCP协议:一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

9、ARP是地址解析协议,简单语言解释一下工作原理。

作用:根据ip地址查找物理地址MAC,即完成ip地址到硬件地址的映射

  1. 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
  2. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机的IP地址,源主机的MAC地址,目的主机的IP 地址。
  3. 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
  4. 源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。广播发送ARP请求,单播发送ARP响应。

10、RARP协议

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

11、交换机和路由器,及区别

交换机的作用:连接局域网中各台计算机或其它设备,使这些计算机或设备组成网络,从而实现资源共享的目的。
路由器的作用:连接两个或多个网络或网段的网络设备,对数据进行路由与转发。

区别:

  1. 交换机工作在OSI的数据链路层;路由器工作在OSI的网络层;
  2. 交换机根据MAC地址寻址;路由器根据IP地址寻址;
  3. 交换机的转发速度较快;路由器的转发速度较慢;

12、网桥的作用

网桥是一个局域网和另一个局域网之间建立连接的桥梁。

13、子网掩码的作用

将ip地址划分为网络地址主机地址两部分

14、一个Http请求的过程

比如在浏览器的地址栏输入www.baidu.com,然后回车,这个过程会发生什么?

大致分为以下几个过程:

  1. URL解析
  2. DNS查询
  3. TCP连接
  4. 处理请求
  5. 接收响应
  6. 渲染页面

查看链接:https://blog.csdn.net/zz_jesse/article/details/102383628

DNS解析的过程

  1. 首先会搜索浏览器自身的DNS缓存(缓存时间较短,大概只有1分钟,且只能容纳1000条缓存)
  2. 如果没有找到,就搜索系统的DNS缓存
  3. 如果没有找到,就去路由器缓存中查找
  4. 如果还没有找到就递归去DNS服务器查找

15、Http和Https的区别

15.1、基本概念

HTTP协议以明文方式发送内容,不提供任何数据的加密,如果攻击者截取了浏览器和服务器之间的传输报文,就可以直接读懂其中的信息,因此,Http不适合传输一些敏感信息。
Https可以看做http的安全版,即在Http下加入了SSL层,Https的安全基础就是SSL。

Https协议的作用可以分为两个:一种是建立信息安全通道,来保证数据传输的安全。另一种就是确认网站的真实性。

15.2、Http和Https的主要区别(https=http+ssl安全传输协议+ca身份认证)

(1)Https需要申请证书
(2)Https比Http安全
(3)Http和Https采用完全不同的连接方式,端口也不一样,前者是80,后者是443
(4)Http的连接很简单,是无状态的;Https是有SSL+Http协议构建的可进行加密传输,身份认证的网络协议。

15.3、Https的工作原理

客户端在使用Https方式与web服务器进行通信时,会有以下几个步骤:
(1)客户端使用Https的URL访问web服务器,要求与web服务器建立SSL连接。
(2)web服务器收到请求后,会将网站的证书信息(包含公钥)发送给客户端。
(3)客户端的浏览器与web服务器开始协商SSL连接的安全等级,也就是信息加密的等级
(4)客户端的浏览器根据双方同意的加密等级,建立会话**,然后利用网站的公钥将会话**加密,并传送给网站。
(5)web服务器根据自己的私钥解密出会话**。
(6)web服务器根据会话**加密与客户端之间通信。
面试-网络基础
1、客户端发起 HTTPS 请求

这个没什么好说的,就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。

2、服务端的配置

采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择,有 1 年的免费服务)。

这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4、客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5、传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8、客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。


16、HTTP的长连接和短连接?

Http的长连接和短连接本质上是tcp的长连接和短连接。本质就是建立的连接是否会被复用。

tcp的短连接,就是客户端和服务端建立连接后,一般只进行一次读写操作,连接就断开了,下次需要通信时再次建立连接;
tcp的长连接,就是客户端和服务端建立连接后,进行读写操作之后,连接不会断开,后续的读写操作会复用这个连接。

17、Cookie和Session的区别?

  1. Cookie是客户端会话技术,Session是服务端会话技术;
  2. cookie将数据保存在客户端,保存的数据大小有限,一般一个cookie保存的数据大小不超过4k,一个域名下保存的cookie个数不超过20个;session将数据保存在服务器端,保存的数据大小,数量没有限制,受限于服务器的内存;
  3. cookie只能保存字符串的数据,而session没有限制;
  4. cookie不安全,别人可以分析本地存放的cookie,进行cookie欺骗,session存放在服务器,较安全

18、ip地址的分类

面试-网络基础
面试-网络基础

相关文章:

  • 2021-09-17
  • 2021-07-18
  • 2021-10-26
  • 2021-12-10
  • 2021-06-17
  • 2021-09-15
猜你喜欢
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
  • 2021-05-18
  • 2022-01-15
  • 2021-09-02
相关资源
相似解决方案