网络基本介绍
OSI模型
- 七层模型
- TCP/IP五层模型
1.七层模型信息介绍
# 1. 应用层
OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。
# 2. 表示层
表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。
三大功能:
1.内码转换
2.压缩与解压缩
3.加密与解密。
# 3. 会话层
会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。
三大功能:
1.建立会话:A、B两台网络设备之间要通信,要建立一条会话供他们使用,在建立会话的过程中也会有身份验证,权限鉴定等环节;
2.保持会话:通信会话建立后,通信双方开始传递数据,当数据传递完成后,OSI会话层不一定会立刻将两者这条通信会话断开,它会根据应用程序和应用层的设置对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输局;
3.断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。或者A、B重启、关机、手动执行断开连接的操作时,OSI会话层也会将A、B之间的会话断开。
# 4. 传输层 (防火墙)
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。
端口范围:端口范围0-65535,0-1023为系统占用端口
# 5. 网络层 (路由器)
本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。
网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。
作为路由转发,通过ip方式
# 6. 数据链路层 (交换机)
将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。
数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。
MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
ARP协议也是为本层使用,将ip地址转成mac地址,定位到主机位置。
# 7. 物理层 (网线)
实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。
总的来说就是将上面数据包封装后的数据转成二进制方式(比特流)转发给其他服务器
- 数据链路层传输
- 网路层传输流程
2.TCP和UDP
# TCP
· 面向连接网络协议
· 可靠连接通讯过程
· 传输数据效率低(需要建立三次握手耽误时间)
可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
# UDP
· 无连接网络协议,无三次握手过程
· 不可靠通讯过程
· 传输数据效率高
不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包
3.数据封装和解封
-
封装解封过程(图解说明)
-
封装解封过程(文字说明)
# 封装
1. 上三层的数据 PDU 应用层
2. 上三层的数据 + TCP协议(源端口和目标端口) 传输层
3. 上三层的数据 + TCP协议(源端口和目标端口) + IP协议(源IP地址和目标IP地址) 网络层
4. 上三层的数据 + TCP协议(源端口和目标端口) + IP协议(源IP地址和目标IP地址)+ Mac地址(源和目标地址) 封装成帧
数据链路层
5. 将数据(二进制)转换成电信号。 调制过程 比特流 ========================= = 物理层
# 解封
从下到上进行解封
1. 比特流 将电信号转换成数字信号(二进制),解调过程 物理层
2. 上三层的数据 + TCP协议(源端口和目标端口) + IP协议(源IP地址和目标IP地址) 数据链路层
3. 上三层的数据 + TCP协议(源端口和目标端口) 网络层
4. 上三层的数据 传输层
5. 数据的解封 应用层
4.报文及报文的组成
# 什么叫做报文
HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。
# 请求报文:它会向Web服务器请求一个动作
请求报文的格式:
起始行: <method> <request-URL> <version>
头部: <headers>
主体: <entity-body>
# 响应报文:它会将请求的结果返回给客户端。
响应报文的格式:
起始行: <version> <status> <reason-phrase>
头部: <headers>
主体: <entity-body>
5.head和data
ip数据包的组成由head和data组成。
# head
**head包含:(固定18个字节)**
发送者/源地址,6个字节
接收者/目标地址,6个字节
数据类型,6个字节
# data
**data包含:(最短46字节,最长1500字节)**
数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
三次握手四次挥手
# 三次握手状态
1.SYN_SENT
2.LISTEN
3.SYN_REVD(syn洪水攻击)****半连接池
4.ESTABLISHED
# 四次挥手状态
1.FIN_WAIT_1
2.CLOSE_WAIT
3.FIN_WAIT_2
4.LAST_ACK
5.TIME_WAIT(TIME_WAIT多,证明服务器上有大并发)
# 三次握手过程
1.客户端向服务端发起请求建立连接字段SYN1,携带自己的序列号定义为:a
2.服务端同意客户端建立连接,回复ACK,确认字段,服务端也向客户端请求建立连接SYN=1,携带自己的序列号吧,回复客户端的序列号,主要告诉客户端,下次的数据序列号为a+1,ack=a+1。
3.客户端同意服务端的连接,回复ACK=1,携带自己的序列号,a+1,并告诉服务端,下次的数据序列号b+1 ackb+1.
4.双方正式建立连接
(1.你向妹子招手 2.妹子回复微笑,妹子也跟你招招手 3.你报以微笑)
为什么要三次握手:
主要节约系统性能资源。
# 四次挥手过程
双方是在建立连接的状态,进行数据传输
1.客户端在没有数据向服务端传输的时候,向服务端请求断开连接FIN=1,携携带自己的序列号,假设为x,回复上一次数据传输ack=y+1
2.服务端收到客户端的断开请求,同意断开,回复ACK=1,携带自己的序列号y+1 ack=x+1,服务端如果还有数据传输,则继续进行传输数据
3.服务端经过上三层的确认,没有数据传输的时候。向客户端发送FIN=1断开请求,及ACK确认字段,携带自己的序列号,假设为z,及回复上一次的握手的ack=x+1
4.在客户端收到服务端的断开请求,回复ACK,确认断开,携带自己的序列号为Seq=x+1,及回复对方的序列号,ack=z+1
5.双方断开连接
为什么四次挥手:
为了让双方的数据能够完整的传输完成。
# 报文的控制手段
ACK 确认字段
SYN 请求连接
FIN 断开连接
PSH 数据传输
RST 连接重置
seq 序列号
- 三次握手过程
- 四次挥手过程
- 详细流程图