一、网络的工作过程:
第一步:通过应用程序将抽象语言转换为编码
第二步:将编码转换为二进制
第三步:将二进制转换为电信号
第四步:处理电信号
二、网络连接设备
1、网络连接设备是把网络中的通信线路连接起来的各种设备的总称,这些设备包括中继器、集线器、交换机和路由器等。
例如:光猫–modem --调制解调器 —做光电转换
集成光猫:光电转换、路由器、交换机、无线AP
2、传输介质 --网线、光纤、同轴电缆
3、网络终端设备 --电脑 手机 PAD 电视–智慧家居
4、路由器:
路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,实现不同网络或网段间的互联互通,从而构成一个更大的网络。通过利用网络地址(IP地址)来确定转发数据的地址,还具有数据处理、防火墙及网络管理等功能。 简单理解就是路由器是连接互联网内局域网和广域网的设备。
例如:USB type-c 网线 光纤 硬盘 内存
5、交换机:
交换机(英文:Switch,意为“开关”)是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。
交换机的传输模式有全双工,半双工,全双工/半双工自适应 。
交换机的全双工是指交换机在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的交换机都支持全双工。全双工的好处在于迟延小,速度快。
三、OSI七层参考模型
OSI – 开放式系统互联模型 (又称OSI七层参考模型):
核心:分层
OSI分层的目的:
(1) 降低层次之间的关联性,某一层的协议增加或减少不影响其他层次协议的工作。
(2)便于标准化的制定。
(3)便于学习和了解计算机层次
对OSI七层参考模型中的层数分析:
7、应用层:功能实现依托不同的应用层协议,如HTTP协议,FTP协议等等,方便应用程序之间进行通信,为用户服务。
简单理解:通过人机交互来实现各种各样的服务
6、表示层:对数据格式进行编译,对收到或发出的数据根据应用层的特征进行处理,如处理为文字、图片、音频、视频、文档等,还可以对压缩文件进行解压缩、对加密文件进行解密等。
简单理解:就是 编码 解码 加密 解密
5、会话层:用于建立、控制和终止终端用户的实用进程间的逻辑信道的连接,并提供支持同步和管理应用进程间的对话服务,验证会话双方的身份,恢复下位层不恢复的差错。
简单理解:发现 建立 维持 终止会话进程
4、传输层:实现端点到端点的可靠数据传输,区分不同进程和服务。
即:产生数据、传递数据
传输过程中主要是通过端口号来区分不同的服务。端口号就好像是门牌号一样,客户端 可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序 对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。
其中
端口号范围:0-65535
端口号分类:分为静态端口号和动态端口号
静态端口号:
范围:1-1023 ,一个端口号对应一个服务,呈永久绑定关 系
动态端口号:
范围:1024-65535, 一个端口号对应一个服务,呈暂时性绑定关系
0为保留端口号,在网络编程中使用,用于代表所有端口号。
主要端口有:
(1)域名系统 (DNS)— TCP/UDP 端口 53
(2)超文本传输协议 (HTTP) — TCP 端口 80
(3)简单邮件传输协议 (SMTP)— TCP 端口 25
(4)邮局协议 (POP)— TCP 端口 110
(5)Telnet — TCP 端口 23
(6)动态主机配置协议 — UDP 端口 67 和 端口 68
(7)文件传输协议 (FTP)— TCP 端口 20 和 端口 21
(8)超文本传输安全协议(https)—Tcp端口 443
URL–统一资源定位符
URL:https://www.sogou.com:443–静态端口号被省略掉了
传输层的作用:
1、提供可靠的传输 协议–标准,可以对话的标准
传输层的两种协议:
TCP 传输控制协议 面向连接的可靠传输协议
UDP 用户数据报文协议 非面向连接的不可靠传输协议
连接方式:面向连接 --三次握手、四次挥手机制
使用这种连接方式是因为其可靠 --确认 重传 排序 流控
两种传输协议的速度比较:
TCP 传输速度—慢
UDP 传输速度—快
我们还可以形象的比较两者的速度:
2、数据分段
MSS最大段长度 1480B
MTU最大传输单元(数据链路层) 1500B(字节)
单位的换算关系 – 字节(Byte)和位(Bit)
1字节=8位
3、数据的封装与解封装
封装:低层向高层传输数据的过程(就是每一层都把上层的协议包(报头+原本的数据)当作数据部分,然后加上自己的协议头部,通过封装不同的协议报头,完成不同的功能)
解封装:高层向低层传输数据的过程
3、网络层 :处理报文分组,完成分组的多路复用和分组交换,以及通信子网络间的数据据传输,将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由协议为分组通过通信子网选择最佳路径。路由器工作在这一层。
作用:根据IP地址来进行逻辑寻址 编址、寻址 --IP协议–网际网络协议。在互联网的每一个节点,必然会存在一个IP地址
2、数据链路层 : 在不可靠的物理介质上提供可靠的传输,接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路。提供物理地址寻址功能。交换机工作在这一层。
数据链路层由介质访问控制层(MAC)和逻辑链路控制层(LLC)两个子层构成。
其中
L L C -逻辑链路控制子层 --为上层服务提供FCS校验 --封装与解封装
MAC -媒介访问控制子层 —根据MAC地址来进行物理寻
如下图:
1、物理层 :位于最低层,是传送信号的物理实体,主要解决两台物理机之间的通信。它的功能是:通过机械和电气的方式将各站点连接起来,组成物理通路,通过二进制比特流的传输来实现,二进制数据表现为电流电压上的强弱,到达目的地再转化为二进制机器码。网卡、集线器工作在这一层。主要为定义电气电压 光学特性 接口规范
为更快速的记忆OSI七层模型,还有如下的快记顺口溜:
(从下到上)物数网传会表应
(从上到下)应表会传网数物
概述分析为:
7.应用层:人机交互的窗口,将抽象语言转换为编码
6.表示层:将编码转换为二进制
5.会话层:建立维护会话链接
4.传输层:建立端到端的传输过程;
端口号–区分进程和服务;
端口号范围:0-65535;
静态端口号(著名端口号): 范围:1-1023 ,一个端口号对应一个服务,呈永久绑定 关系
HTTP:源端口随机(1024-65535),目标端口80
动态端口号:1024-65535 一个端口号对应一个服务,呈暂时性绑定关系
传输协议
协议:TCP、UDP
TCP 传输控制协议 面向连接的可靠传输协议 慢 可分段
UDP 用户数据报文协议 非面向连接的不可靠传输协议 快 不可分段
3.网络层:提供逻辑寻址(通过IP地址做逻辑寻址)
2.数据链路层:具体作用–控制物理硬件
MAC地址(由48位二进制构成)–物理地址(不变,相当于人的身份证号)
逻辑链路层–IP地址(可变,不同的网络范围IP不同)
ARP–地址解析协议–通过一种地址获取另外一种地址
广播和洪泛:从一个端口接入通过多个端口发出 (不确定IP洪泛、确定IP广播)
区别:行为上的区别
广播–主动
洪泛–被动
1.物理层:处理电信号
四、TCP/IP模型
TCP/IP协议簇
PDU:协议数据单元
TCP的五层模型(概述):
应用层–数据报头
传输层–数据报文
网络层–数据包
数据链路层–数据帧
物理层–比特流
Tcp的三次握手和四次挥手
三次握手:三次握手保证双方都具有接受和发送数据的能力。
SYN:同步序列号请求
ACK:确认
Seq+1 = ack
主要原因:
- 防止重复历史连接的初始化
2.同步双方初始序列号
3.避免资源的浪费
第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。
第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1(ISN—初始序列号)
四次挥手:即终止TCP连接,需要客户端和服务端总共发送4个包确认连接的断开。流程如下:
Clien(客户端)
Server(服务端)
FIN-请求断开连接
过程:
第一次挥手:
Clien发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状 态。
第二次挥手:
Server收到FIN后,发送一个ACK给Client,Server进CLOSE_WAIT状态。
第三次挥手:
Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状 态。
第四次挥手:
Client收到FIN后,Client进入TIME_WAIT状态,发送ACK给Server,Server进入 CLOSED状态,完成四次握手。
TCP握手为什么是三次,两次行不行?
首先,为什么是三次握手而不是四次或者更多?这个问题是比较简单的,因为既然三次能够解决的问题,为什么非要用四次来浪费资源?
但其实问题的重点在于,为什么不能只用两次?第三次握手去掉不行吗?
总的来说,三次握手是为了防止当已失效的连接请求报文段突然又传到服务端,造成双方的不一致,导致资源的浪费。
“已失效的连接请求报文段”指的是这样的情况,客户端发出一个SYN报文段,由于阻塞或者其他原因在网络中滞留,以至于客户端认为丢包了(其实并没有丢),于是重新发出一个SYN报文段,假设这一次顺利完成了,那么双方建立连接。这看起来似乎没什么问题,但网络中有一个隐患,就是那个还在网络中传输的SYN报文段,如果这个SYN在连接期间被服务端收到了,那服务端只会无视它,这样就万事大吉了,但如果是在连接释放之后被收到呢?此时服务端认为有人向他发出连接请求,于是响应一个SYNACK回去,如果采用两次握手的话,那么服务器认为此时连接已经建立好了。但是当客户端收到这个SYNACK时,如果他并没有发起连接,那么他不会理睬这个SYNACK,就当没事发生过(如果客户端此时正好发起连接,那其实他也不会理睬这个SYNACK,因为确认号不对啊。)。那问题就大了,这时候服务器以为连接好了,向客户端发送数据,而客户端处于CLOSED状态,会丢弃这些包,这样就很浪费了。并且还有一个尴尬的问题,就是这个时候当客户端打算发起连接时,服务端又不理睬了,在这里尬这,他们就别想互发数据了。当然这些问题似乎不是不可解决的,当客户端发现服务端老是向自己发数据,而自己总是丢弃,可能会向服务端发一个RST(报文段的RST标记号为1),强制服务端关闭连接。但资源总归是浪费了一会了。而用三次握手就不会出现这样的问题。
为什么三次握手?
因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一 个报文里发送给客户端。
为什么四次挥手?
当收到对方的FIN报文时,仅表示对方不再发送数据但还能接收收据,我们也未必把全 部数据都发给了对方,所以我们可以立即close,也可以发送一些数据给对方后,再发 送FIN报文给对方表示同意关闭连接。因此我们的ACK和FIN一般会分开发送。