计算机网络

105 阅读11分钟

一、计算机网络的体系结构

一般有三种:OSI 7层模型、TCP/IP四层模型、五层结构

OSI7层结构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP结构:网络接口层、网络层、传输层、应用层

五层结构:物理层、数据链路层、网络层、传输层、应用层


简单来说,OSI是理论上的网络通信模型,TCP/IP是实际上的网络通信模型、五层结构是为了介绍网络原理而折中的网络通信模型

OSI七层模型

  • 应用层:通过应用进程之间的交互来完成特定网络应用,应用层协议定义的是应 用进程间通信和交互的规则,常见的协议有:HTTP FTP SMTP SNMP DNS.
  • 表示层:数据的表示、安全、压缩。确保一个系统的应用层所发送的信息可以被 另一个系统的应用层读取。
  • 会话层:建立、管理、终止会话,是用户应用程序和网络之间的接口。
  • 运输层:提供源端与目的端之间提供可靠的透明数据传输,传输层协议为不同主 机上运行的进程提供逻辑通信。
  • 网络层:将网络地址翻译成对应的物理地址,实现不同网络之间的路径选择, 协 议有 ICMP IGMP IP 等 .
  • 数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路。
  • 物理层:建立、维护、断开物理连接。

TCP/IP模型

  • 应用层:对应于 OSI 参考模型的(应用层、表示层、会话层)。
  • 传输层: 对应 OSI 的传输层,为应用层实体提供端到端的通信功能,保证了数据 包的顺序传送及数据的完整性。
  • 网际层:对应于 OSI 参考模型的网络层,主要解决主机到主机的通信问题。
  • 网络接口层:与 OSI 参考模型的数据链路层、物理层对应

五层体系结构:

  • 应用层:对应于 OSI 参考模型的(应用层、表示层、会话层)。
  • 传输层:对应 OSI 参考模型的的传输层
  • 网络层:对应 OSI 参考模型的的网络层
  • 数据链路层:对应 OSI 参考模型的的数据链路层
  • 物理层:对应 OSI 参考模型的的物理层。

数据在各层之间的传输

对于发送方而言,从上层到下层层层包装,对于接收方而言,从下层到上层层层解开包装

发送方: 应用层数据在传输层被分割成许多份,每一份在网络层添加原IP地址和目标IP地址变成数据包,在数据链路层添加原MAC地址和目标MAC地址变成数据帧,然后转化为物理层的比特流

接收方: 接收到物理层的比特流,先判断数据链路层的MAC地址是不是自己的,是就去掉MAC地址变成数据包,不是就抛弃,然后再判断网络层的IP地址是不是正确的,是就去掉IP地址变成数据段,交给传输层传到应用层,由应用层拼接数据段呈现给用户

二、网络综合

浏览器输入URL到显示主页的过程

  1. DNS解析:将域名解析成对应IP地址
  2. TCP连接:与服务器通过三次握手,建立TCP连接
  3. 向服务器发送HTTP请求
  4. 服务器处理请求,返回HTTP相应
  5. 浏览器解析渲染界面
  6. 断开连接,TCP四次挥手,连接结束

DNS解析过程

  1. 先查看本地缓存看能否找到网址的对应ip,找到就直接返回
  2. 找不到查找本地DNS服务器,找到了直接返回
  3. 还是找不到,本地DNS服务器向跟服务器发送请求,根服务器负责返回顶级域名服务器的ip地址列表
  4. 本地DNS服务器再向其中一个顶级域名服务器发送一个请求,返回权限域名服务器的ip地址列表
  5. 本地DNS服务器再向其中一个权限域名服务器发送请求获取目标网址对应的ip

WebSocket与Socket

Socket就是IP地址+端口+协议,完成了对TCP/IP的高度封装

WebSocket是一个持久化协议,伴随h5出现,用来解决http不支持持久化连接的问题

Socket是网络编程的标准接口,而WebSocket则是应用层通信协议

端口

21:FTP文件传输协议

22:SSH

23:Telnet远程登录服务

53:DNS域名解析服务

80:HTTP超文本传输协议

443:HTTPS

1080:Sockets

3306:MySQL默认端口号

HTTP

状态码

101:切换请求协议

200:请求成功

301:请求资源永久移动

302:请求资源临时移动

400:语法错误,服务器无法理解

401:当前请求需要认证

403:拒绝执行

500:服务器内部错误

HTTP请求方式

  • GET:对服务器获取资源简单请求
  • POST:向服务器提交数据请求
  • PUT:修改指定资源
  • DELETE:删除URL标记的资源
  • CONNECT:代理服务器
  • TRANCE:回环测试
  • OPTIONS返回所有可用方法
  • HEAD:获取URL标记资源的首部

URI和URL

URI统一资源标识符,表示web上的每一种可用的资源

URL统一资源定位符,URI的子集,主要提供资源的路径

HTTP/1.0,1.1,2.0

1.0:默认短链接,每次请求都会开启一个TCP连接

1.1:默认长连接,TCP连接不关闭,可以被多个请求复用,客户端可以同时发送多个请求

2.0:多路复用,客户端和服务器都可以同时发送多个请求或回应,而且不用一一对应

HTTP 如何实现长连接

什么是 HTTP 的长连接?

说的是 TCP 的长短连接

如何设置长连接?

通过在头部(请求和响应头)设置 Connection 字段指定为 keep-alive ,HTTP/1.0协议支持,但是是默认关闭的,从 HTTP/1.1 以后,连接默认都是长连接。

HTTP 与 HTTPS 有哪些区别

安全性

  • HTTP是明文传输协议,数据在传输过程中不加密,容易被窃听和篡改。
  • HTTPS通过使用SSL(Secure Socket Layer)或TLS(Transport LayerSecurity)协议对数据进行加密,确保传输的数据在网络上是安全的,不容易被窃听和篡改。

加密方式

  • HTTP不提供加密机制,数据以明文形式传输。
  • HTTPS使用SSL或TLS协议来加密传输的数据,使用公钥加密和私钥解密的方式确保数据的机密性和完整性。

端口号

  • HTTP默认使用端口号80进行通信。
  • HTTPS默认使用端口号443进行通信。

证书

  • HTTPS需要使用SSL证书,证书由可信的第三方机构颁发,用于验证服务器的身份。
  • HTTP不需要证书验证,任何人都可以发送HTTP请求。

连接方式

  • HTTP是无状态协议,每个请求都是独立的,服务器不会保留之前的请求信息。
  • HTTPS可以使用持久连接,通过SSL会话复用,提高性能和效率。

Session 和 Cookie

  • Cookie 是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个 Cookie,客户端就把 Cookie 保存起来。在客户端下次向同一服务器再发起请求时,Cookie 被携带发送到服务器。服务端可以根据这个Cookie判断用户的身份和状态。
  • Session 指的就是服务器和客户端一次会话的过程。它是另一种记录客户状态的机制。不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该session中查找用户的状态。

TCP

TCP的三次握手

TCP提供面向连接的服务,在传输数据前必须建立连接,TCP通过三次握手建立连接

  • 最开始客户端和服务器都处于CLOSE状态,服务器监听客户端的进入,进入LISTEN状态
  • 客户端发送连接请求,进入第一次握手(SYN=1,seq=x),客户端进入SYN_SENT状态
  • 服务器确认连接,进入第二次握手 (SYN=1, ACK=1, seq=y, ACKnum=x+1),服务器进入SYN_RCV
  • 客户端收到服务器的确认后再次向服务器发出确认,这就是第三次握手,发送完毕后客户端进入ESTABLISHED状态,服务器收到这个包时,也进入 ESTABLISHED状态

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 SegmentLifetime )之后 ,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

TCP与UDP区别

TCP是面向连接的,在传输前需要三次握手建立连接,UDP不需要连接,即刻传输数据。

TCP只能一对一,点对点服务,UDP支持一对一、一对多、多对多通信

TCP保证数据可靠交付,拥有确认应答和重传机制,无重复、不丢失、按序到达;

UDP尽可能交付,不保证可靠性。

TCP拥有流量控制、拥塞控制,保证传输安全性等,UDP在网络拥堵情况下不会降低发送速率。

简单总结一下:UDP协议是无连接方式的协议,它的效率高,速度快,占资源少,对服务器的压力比较小。但是其传输机制为不可靠传输

IP

IP协议(Internet Protocol)又被称为互联网协议,是支持网间互联的数据包协议,工作在网际层 ,主要目的就是为了提高网络的可扩展性。通过网际协议 IP,可以把参与互联的,性能各异的网络看作一个统一的网络 。 和传输层TCP相比,IP协议是一种无连接/不可靠、尽力而为的数据包传输服务,和TCP协议一起构成了TCP/IP协议的核心。

IP协议主要有以下几个作用:

  • 寻址和路由 :在IP数据报中携带源IP地址和目的IP地址来表示该数据包的源主机和目标主机。IP数据报在传输过程中,每个中间节点(IP网关、路由器)只根据网络地址来进行转发,如果中间节点是路由器,则路由器会根据路由表选择合适的路径。IP协议根据路由选择协议提供的路由信息对IP数据报进行转发,直至目标主机。
  • 分段和重组 :IP数据报在传输过程中可能会经过不同的网络,在不同的网络中数据报的最大长度限制是不同的,IP协议通过给每个IP数据报分配一个标识符以及分段与组装的相关信息,使得数据报在不同的网络中能够被传输,被分段后的IP数据报可以独立地在网络中进行转发,在达到目标主机后由目标主机完成重组工作,恢复出原来的IP数据报。

传输层协议和网络层协议有什么区别?

网络层协议负责提供主机间的逻辑通信;传输层协议负责提供进程间的逻辑通信。