计算机网络
计算机网络的结构
OSI的七层协议
-
应用层
-
表示层
-
会话层
-
传输层
-
网络层
- 路由器
-
数据链路层
-
交换机
-
交换机的工作原理
- 交换机拥有一条很高带宽的内部总线和内部交换矩阵。交换机的所有端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC的NIC挂接在哪个端口上,通过内部交换机矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。使用交换机也可以把网络“分段”,通过对照MAC地址表,交换机只允许比要的网络流量通过交换机,通过交换机的过滤和转发,可以有效的隔离网络风暴,减少误包和错包的出现,避免共享冲突,交换机在同一个时刻可进行多个端口之间的数据传输,每一个端口可视为独立的网段,连接在其上的网络设备独自享有网络的全部带宽,无须同其他设备竞争使用,当节点A向节点D发送数据时,节点B可同时向节点C发送数据,而且这两个传输都享有网络的全部带宽,都有着自己的虚拟连接。
- 交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备,交换机可以学习MAC地址并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间简历的临时交换路径,使数据帧直接由源地址到达目的地址
-
-
网桥
-
-
物理层
-
网卡
-
网线
-
集线器
-
集线器的功能
- 主要是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上,工作于OSI七层模型中的第一层即物理层
- 集线器不具备交换机具有的MAC地址表,所以它发送数据时都是没有针对性的,而是采用广播方式发送,发送数据时不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点
-
-
中继器
-
调制解调器
-
TCP/IP的四层协议
- 应用层
- 运输层
- 网络层
- 网络接口层
五层协议(常用)
-
应用层
-
应用层的任务是进程间交互来完成特定网络应用,应用层协议定义了应用进程间的通信和交互的规则
-
协议
-
域名系统DNS
- 是因特网的一项核心服务,作为一个域名和IP地址互相映射的一个分布式数据库,人们可以通过访问域名通过DNS获取IP地址从而访问互联网,而不用去记复杂难记的IP数串。
-
万维网应用的HTTP协议
- 超文本传输协议是互联网应用最为广泛的一种网络协议,所有的万维网文件都必须遵循这个标准,设计该协议的最初目的是提高一种发布和接收HTML页面的方法
-
支持电子邮件的SMTP协议
-
-
-
运输层
-
主要任务是负责向两台主机进程之间的通信提供通用的数据传输服务,应用进程利用该服务传送应用层报文
-
协议
- 传输控制协议TCP 面向连接可靠的数据传输服务
- 用户数据协议UDP 面向无连接,尽最大努力的数据传输服务,不保证数据传输的可靠性
-
-
网络层
- 在计算机网络中进行通信的两个计算机之间可能会经过多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换节点,确保数据及时传送
- 网络层把运输层产生的报文段或用户数据封装成分组和包进行传送
-
数据链路层
- 简称为链路层,两台主机之间的数据传输,总数在一段段的链路上传送的,这就需要使用专门的链路层的协议。
- 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧
-
物理层
- 作用是实现相邻计算机节点之间的比特流的透明传输,尽可能屏蔽具体传输介质和物理设备的差异
TCP连接三次握手四次挥手
三次握手
-
过程
- 客户端发送带有SYN标志的数据包给服务端–一次握手
- 服务端发送带有SYN/ACK标志的数据包给客户端–二次握手
- 客户端发送带有ACK标志的数据包给服务端–三次握手
-
SYN同步序列编号,是建立TCP/IP时的握手信号
ACK消息响应 -
为什么要有三次握手,作用分别是什么
- 三次握手的目的是简历可靠的通信通道,通信就是数据的发送与接收,而三次握手的主要目的就是双方确认自己与对方的发送和接收的正常的
- 第一次握手,客户端什么都确认不了;服务端确认对方发送正常,自己接收正常。
- 第二次握手,客户端确认对方发送、接收正常,自己发送、接收正常;服务端确认对方发送正常,自己接收正常
- 第三次握手,客户端确认对方发送、接收正常,自己发送、接收正常;服务端确认对方发送、接收正常,自己发送、接收正常
-
第二次握手传回了ACK,为什么还要传回SYN?
- 接收端传回发送端所发送的ACK是为了告诉发送端,我收到的信息确实是你所发送的信号,这表明从客户端到服务端的通信是正常的。而回传SYN则是为了建立并确认从服务端到客户端的通信
四次挥手
-
过程
- 客户端发送一个FIN,用来关闭客户端到服务器的数据传送
- 服务器收到这个FIN,发回一个ACK,确认序列号为收到的序号加1.和SYN一样,一个FIN占用一个序号
- 服务器关闭与客户端的连接,发送一个FIN给客户端
- 客户端发回ACK报文确认,并将确认序号设置为收到序号加1
-
不管是客户端还是服务器端就可以在数据传输结束的后发出连接释放的通知,待对方确认进入半关闭状态,当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭TCP连接
TCP、UDP协议的区别
TCP
- TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接,TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的传输服务,连接过程中增加了许多开销,如确认、流量控制、计时器以及连接管理等
- TCP一般用于文件传输、发送和接收邮件、远程登陆等场景
UDP
- UDP在传送数据之前不需要先建立连接,远程主机在收到UDP报文后,不需要给出任何确认。
- UDP一般用于QQ语音、QQ视频、直播等等
集线器与交换机的区别
集线器的作用可以理解为将一些机器连接起来组成一个局域网,而交换机的作用与集线器大体相同,但性能上有区别,集线器采用的是共享带宽的工作方式,而交换机是独享带宽
工作位置不同
- 集线器工作在物理层
- 交换机工作在数据链路层
工作方式不同
- 集线器是一种广播方式,当集线器的某个端口工作时其他端口都能听到消息
- 交换机工作时端口互不影响
带宽不同
- 集线器是所有端口共享一条带宽,在某一时刻只能有有两个端口传输数据
- 交换机每个端口独占一条带宽
性能不同
- 集线器以广播方式传输数据,流量小时性能下降不明显,适用于共享总线的局域网
- 交换机以MAC地址进行寻址,有一定额外的寻址开销
路由器与交换机的区别
工作层次不同
- 交换机是工作在数据链路层
- 路由器工作在网络层
数据转发所依据的对象不同
- 交换机是利用物理地址即MAC地址来确定转发数据的目的地址,MAC地址通常是硬件自带的,由网卡生厂商来分配的,而且已经固化到网卡中,一般来说不可更改
- 路由器则是利用IP地址来确定数据转发的地址,是在软件中实现的,描述的是设备所在的网络,IP地址通常由网络管理员或系统自动分配
能否分割广播域
- 传统交换机只能分割冲突域,不能分割广播域
- 路由器可以分割广播域
是否负责同一个网段的通信
- 交换机负责同一个网段的通信
- 路由器负责不同网段的通信
路由表
是路由器上存储的一张路由信息表,该表中存有到达特定网络终端的路径,在某些情况下,还要一些与这些路径相关的度量,路由器的主要工作是经过路由器中的每一个数据包寻找一条最佳的传输路径,并将数据有效地传送到目的站点,为了完成这项工作,路由表是路由器中保存着各种传输路径的相关数据,共路由选择时使用,表中包含的信息决定了数据转发的策略,路由表可由系统管理员固定设置好,也可以动态修改
静态路由表
- 由系统管理员事先设置好固定的路由表称之为静态路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变
动态路由表
- 是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径
在浏览器输入url地址按下回车到页面显示发生了什么
浏览器查找域名对应的IP地址(使用了DNS协议)
-
DNS查找过程
- 浏览器缓存
- 路由器缓存
- DNS缓存
浏览器向web服务器发送一个HTTP请求(cookies会随着请求发送给服务器)
服务器处理请求(根据请求带过来的参数、cookies处理请求,生成一个HTML响应
服务器发回一个HTML响应
浏览器开始显示HTML
-
使用的协议
- TCP:与服务器建立TCP连接
- IP:建立TCP连接的时候,需要发送数据,用到网络层的IP协议
- OSPF:IP数据包在路由器之间,路由选择使用OSPF协议
- ARP:路由器在与服务器建立通信时,需要将IP地址转换成MAC地址,用到ARP协议
- HTTP:在TCP建立完成后,使用HTTP协议访问网页
总体来说分为以下几个过程
- DNS解析域名对应的IP地址
- 根据IP地址建立TCP连接
- 连接后向服务器发送HTTP请求
- 服务处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
物理层
数据通信系统
-
有关信号的概念
- 单向通信(单工通信)–只有一个方向的通信而没有反方向的交互
- 双向交替通信(半双工通信)–通信的双方都可以发送信息,但不能双方同时发送、也不能同时接收
- 双向同时通信(全双工通信)–通信的双方可以同时发送和接收信息
数据链路层
点对点信道
-
使用一对一的点对点通信方式
-
数据链路和帧
- 链路是一条无源的点对点的物理线路段,中间没有任何其他的交换节点、数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
- 数据链路层传送的是帧
广播信道
- 使用一对多的广播通信方式,过程比较复杂,广播信道上连接的主机很多,必须使用专享信道协议来协调这些主机的数据发送与接收