程序员面试必备知识点之 计算机网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39956624/article/details/82317616

1.计算机网络分为哪几层?

这里写图片描述

ISO/OSI七层模型

ISO:国际标准化组织
OSI:开放系统互联模型
IOS:苹果操作系统,而且是思科公司为其网络设备开发的操作维护系统

以下是ISO七层模型图解:
这里写图片描述
其中上三层是对用户提供服务的,下四层是对用户信息传递进行传递的。

各层功能详解

这里写图片描述

  1. 物理层:物理层是最底层的一层,它是数据之间比特流传输的实际形式;
  2. 数据链路层:数据链路层是解析MAC物理地址的,通过MAC地址来确定我访问的对象(表明收件人以及发件人的相关信息)而且如果传错了可以要求你进行数据包的重传。
  3. 网络层:编址寻址(每个目标都有一个IP地址 );路由选择(路由器根据全网地图选择一条最快的路从源地址到目的地址);拥塞控制(流量大时需要控制);异种网络互连(不同的网络都可以相互通信)
  4. 传输层:分段上层数据 (把上层来的大的数据分成一段一段小的数据);建立端到端连接 ;透明、可靠传输 (检查错误并更正错误 或者重传);流量控制;TCP、UDP 协议
  5. 会话层:确定网络数据是否要经过网络会话
  6. 表示层:将英文等被人识别的信息进行转换(翻译)为机器语言
  7. 应用层:提供用户的接口

    以邮箱为例进行分析
    用户通过打开浏览器写入信件(应用层)–> 将信件内容转变为机器语言 –> 确定数据是否要向其他用户进行数据传递(会话层) –> 写入两个端口号(传输层) –> 写入两个IP地址(网络层) –> MAC地址决定我的目标邮局位置(数据链路层) –> 将信件投递(物理层) –> 向上传

TCP/IP 四层模型

这里写图片描述
TCP/IP四层模型是一种OSI七层模型的演化,其相当于OSI的用户直接联系层被应用层所替代,而数据链路层以及物理层被网络接口层进行替代。

2.TCP和UDP有什么区别??哪些应用层协议使用了TCP,哪些使用了UDP?

  • TCP是面向连接的、可靠的
    其实网络的不安全不稳定特性,无论多少次握手都不能保证连接的可靠性
    但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性
  • UDP 无连接的、不可靠
    UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确
    接收,当然也不用重发

    TCP对应的协议:(1) FTP:定义了文件传输协议,使用21端口。(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
    UDP对应的协议:(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

3.TCP三次握手

这里写图片描述

  1. 客户端 发起握手,目的端点是 服务端 的端点 post_server
    1. 生成一个随机数作为它的初始化发送序号 x
    2. 发出一个同步报文段,SYN=1,发送序号 seq=x
    3. 并进入SYN_SEND状态,等待服务器确认
  2. 服务端监听到端口 post_server 上有连接请求,响应
    1. 生成一个随机数作为它的初始发送序号 seq = y
    2. 发出同步报文字段并对主机 A 端口1的连接请求进行确认,发送ack=x+1
    3. 即发送 SYN+ACK 包,此时服务器进入SYN_RECV状态
  3. 主机 A
    1. 发出对 服务端 端口 post_server 的确认,确认序号 ack=y+1,还有seq=x+1
    2. 客户端和服务器进入ESTABLISHED状态,完成三次握手

四次握手关闭连接

这里写图片描述
1. 主机 A 关闭 A主机的 端口1 到 B主机的 端口2 的传输连接:
应用程序通知 TCP 数据已经发送完毕时,关闭连接;
TCP 向主机 B 发送一个带 FIN 附加标记的报文段(FIN 表示 finish),FIN=1,seq=x。
2. 主机 B 响应:
收到这个 FIN 报文段之后,并不立刻用 FIN 报文段回复主机 A,而是先向主机 A 发送一个确认序号 ,ACK=1,ack=x+1;
同时通知自己相应的应用程序,主机 A 方传输已经结束,对方要求关闭连接(先发送 ACK 的目的是为了防止这段时间内,主机 A 重传 FIN 报文段)。
3. 主机 B 关闭 端口2到端口1的传输连接:
应用程序告诉 TCP: 我要彻底地关闭连接;
TCP 收到对最后数据的确认后,向主机 A 发送一个 FIN 报文段。FIN=1,seq=y,y 是 B
发送数据的最后字节的序号加1。ACK=1,seq=x+1。
4. 主机 A 响应:
收到这个 FIN 报文段之后,向主机 B 发送一个 ACK 表示连接彻底释放。ACK=1,ack=y+1;
主机B收到主机A的ACK报文段以后,就关闭连接;此时,主机A等待2MSL (Maximum Segment
Lifetime)后依然没有收到回复,则证明主机 B已正常关闭,那好,主机A也可以关闭连接了。

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

  • 第一次握手 客户端发,服务端 知道 客户端 可以 发消息
  • 第二次握手 服务端收和发,客户端 知道 服务端 可以 接收消息发消息
  • 第三次握手 客户端收和发,服务端 知道 客户端可以 接收消息发消息

3 次是双向通信的最小值,也就是 SYN, SYN ACK, ACK ,两个发送两个接收 ,其中第二次把接收和发送合在一起了

如果两次握手的话,客户端有可能因为网络阻塞等原因会发送多个请求报文,这时服务器就会建立连接,浪费掉许多服务器的资源。所以要增加第三次握手。
这里写图片描述

4.什么是socket?

socket(也叫套接字)最初是在Unix系统上开发的网络通信的接口。
两种形式的socket:

  • 流式套接字,对应与TCP协议。
  • 数据报套接字,对应与UDP协议。

5.什么是https协议?https协议用到了哪种密钥?

https是在http上面套了一层ssl,用来实现安全连接。用到的密钥有对称密钥和非对称密钥。基本上就是有数字证书,然后把对称密钥作为消息内容,通过非对称密钥来进行传输。之后双方的通信就通过对称密钥来进行解密就行了。

猜你喜欢

转载自blog.csdn.net/qq_39956624/article/details/82317616