计算机网络

1. 网络分类

根据覆盖范围可以分为个域网、局域网、城域网、广域网

(1)个域网:10m的半径内,进行短距离通信,如蓝牙

(2)局域网:覆盖一个房间几台电脑 或 公司的一栋楼,如公司内网

(3)城域网:一个城市或几个城市之间,如宽带

(4)广域网:范围超大,如移动通信网络、卫星网络

2. 网络核心功能

网络的核心功能是:路由和转发

(1)路由:确定数据分组从源到目标所使用的路径(全局操作)

当数据包进入网络设备,设备会读取数据包的目的 IP 地址,根据这个 IP 地址和路由表,就能决定应该把数据包发送到哪里,这个过程就是路由

(2)转发:路由器或交换机将接收到的数据分组转发出去(本机操作)

利用了 MAC 地址,设备将数据包发送到目标设备

3. 网络模型

3.1 OSI 七层模型

OSI 模型是国际标准化组织 ISO 提出的概念模型,从下至上依次为:

(1)物理层:单位是比特,在设备之间透明传输比特流

  • 将数据转化成 0 和 1

(2)数据链路层:单位是帧,实现相邻节点之间的传输,保持数据正确顺序和完整性

  • 规定了 0 和 1 的分包形状,确定了网络数据包的形状

(3)网络层:单位是数据报,控制报文通过网络的路由选择,实现主机与主机的通信

  • 需要确定计算机的位置,IPv4、IPv6来确定

(4)传输层:单位是报文段(TCP)或用户数据报(UDP),为端到端提供可靠安全的服务

  • 每一个应用程序会在网卡注册一个端口号,该层就是端口与端口的通信

(5)会话层:建立和维持会话,保持会话同步

(6)表示层:解决不同系统之间的通信问题

  • eg:Linux 下的 QQ 和 Windows 下的 QQ 可以通信

(7)应用层:提供网络服务的接口

OSI 七层模型是正统意义上的国际标准,但实现过于复杂,因而 TCP/IP 模型被广泛使用,这才是事实上的国际标准

3.2 TCP/IP 四层模型

互联网协议套件 IPS 最核心的两个协议是 TCP 和 IP,因而也被称为 TCP/IP 协议族,它具有四层网络结构,从下至上依次:

(1)网络接口层:确定网络数据包的形状

  • 物理层、数据链路层

(2)网络层

(3)传输层

(4)应用层

  • 会话层、表示层、应用层

3.3 五层模型

TCP/IP 四层模型没有给出网络接口层的具体内容,因此在学习和开发中,通常将网络接口层替换为 OSI 七层模型中的数据链路层和物理层来进行理解

4. 网络常见协议

4.1 应用层

DNS :实现域名到 IP 地址的映射,DNS 缓存能够加快网络资源的访问


DNS 域名解析分两种方式:

(1)迭代查询

客户端发送 DNS 请求给根域名服务器后,没找到就依次向上顶级域名、二级域名不断查找,直到解析出 IP 地址,这个过程是需要客户端不断向域名服务器发送请求的

(2)递归查询

客户端发送 DNS 请求给根域名服务器后就不用管了,根域名会把请求不断向上发送,直到解析出 IP 地址后,根域名就把 IP 地址发送给客户端


HTTP:超文本传输协议,明文传输,默认端口号 80

HTTPS:超文本传输安全协议,在 HTTP 基础上使用 SSL/TLS 来加密报文,默认端口号 443

WebSocket:基于 TCP 的全双工通信协议

FTP:文件传输协议

电子邮件发送、接收过程:用户代理用 SMTP 协议向邮件服务器发送邮件,邮件服务器之间发送邮件也是用 SMTP,最后用户用 POP3 协议从邮件服务器读取邮件

4.2 传输层

4.2.1 TCP

TCP 是面向连接的、可靠的、基于字节流的传输协议,全双工模式

TCP 主要特点有:慢启动、拥塞控制、快速重传、可恢复

三次握手

第一次握手:客户端发送 SYN = 1 的标志,并随机生成一个初始序列号。此时客户端进入 SYN-SENT 状态,等待服务器的确认

第二次握手:服务器接收到请求后,回复带有 SYN = 1 和 ACK = 1 的标志,确认号的值为客户端序列号 + 1,并随机生成自己的初始序列号。此时服务器进入 SYN-RCVD 状态,等待客户端的最终确认

第三次握手:客户端收到服务器的响应后,发送 ACK = 1 的标志,确认号为客户端序列号 + 1,自己的初始序列号也要 + 1,此时建立连接完成


为什么需要三次握手:为了确保双方的接收和发送的能力都是正常的;防止已经失效的连接请求报文段突然又传送到了服务端,因而产生错误,简单来说,防止服务端的等待浪费资源

例如:客户端发送的第一个连接请求报文段并没有丢失,只是因为网络节点延迟导致一段时间后才传到服务器,这本来已经是一个失效的报文段,但是服务器以为是客户端发送的新请求,就会确认报文段。如果不采用”三次握手“,那服务器发送确认后这个连接就建立起来了,但客户端并没有发起请求所以不会理会服务器;服务器又一直等待客户端发送数据,这样就白白浪费资源了


四次挥手

第一次挥手:客户端发送 FIN = 1 标志 和 自己的序列号,表示它准备关闭连接,客户端进入 FIN-WAIT-1 状态

第二次挥手:服务器收到关闭请求后,发送 ACK = 1 标志,确认号为客户端序列号 + 1,服务器进入 CLOSE-WAIT 状态

  • 服务器处于半关闭状态,即客户端没有数据要发送了,但是服务器还可以给客户端发送数据

  • 客户端接收到确认后,进入 FIN-WAIT-2 状态,等待服务器发送连接释放报文

第三次挥手:服务器想断开连接了,发送 FIN = 1 和 ACK = 1 标志,并指定自己的序列号,服务器进入 LAST-ACK 状态,等待客户端的确认

第四次挥手:客户端收到关闭请求后,发送 ACK = 1 标志,确认号为服务器序列号 + 1;客户端进入 TIME-WAIT 状态,等待 **2MSL(最长报文段寿命)**的时间

  • 服务器收到确认报文后,进入 CLOSED 状态
  • 客户端经过 2MSL 的等待后,也进入 CLOSED 状态,此时 TCP 连接彻底断开

为什么要四次挥手:在建立连接时,SYN 和 ACK 可以放在同一个报文里发送,但是关闭连接时,当收到对方的 FIN 报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能还需要发送一些数据给对方之后,再发送 FIN 报文给对方来表示你同意现在可以关闭连接了,所以它这里的 ACK 报文和 FIN 报文多数情况下都是分开发送的,所以需要四次挥手


为什么要等待 2MSL 的时间:为了确保服务器正常收到了 ACK 报文,如果没有收到的话,服务器会重新发送 FIN 报文,客户端再次收到 ACK 报文后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文


4.2.2 UDP

UDP 是无连接的、面向报文的,提供不可靠的数据交付,会出现分组丢失、重复、乱序等现象,但实时性较好,工作效率比 TCP 高

TCP 只能是 1 对 1 的,UDP 支持 1 对 多;TCP 首部有 20 字节, UDP 只有 8 字节

4.3 网络层

IP:整个 TCP/IP 协议族的核心,为传输层提供数据分段,同时也能组装数据供传输层使用。它将多个单个网络连接成一个互联网,实现大规模的网络互联

ICMP:用于在 IP 主机、路由器之间传输控制信息,当 IP 无法访问目标、IP 路由器无法按照当前传输速率转发数据包时,会自动发送 ICMP 消息


路由器寻址原理:

(1)路由器收到数据包,提取目标 IP 地址及子网掩码,计算出目标网络地址

(2)根据目标网络地址查找路由表,找到的话就按照对应的出口发送到下一个路由器

(3)没有找到就看有没有默认路由,有的话就按照对应出口发送到下一个路由器

(4)还没有找到就给源 IP 发送一个出错的 ICMP,表明没法传递该数据包


4.4 数据链路层

ARP:根据 IP 地址获取物理地址,主机发送消息时会将包含目标 IP 的 ARP 请求广播到局域网络上的所有主机,并接受返回消息,以此来确定物理地址;收到的物理地址和 IP 地址会缓存到 ARP,下次查询就会先去看缓存有没有,没有再进行广播

PPP:点对点协议,用来拨号或专线方式建立点对点连接发送数据

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值