网络协议原理

网络协议原理

1.OSI网络模型

  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层

2.TCP/IP网络模型

应用层(应用层、表示层、会话层) => http/https
传输层 => TCP
网络层 => IP、MAC
网络访问层(数据链路层、物理层) => 网线、光纤

1.网络访问层

以外网协议规定,每个接入网络的设备必须具备网卡,网卡地址即MAC地址。
以太网数据包头部固定长度14字节,包含源MAC地址和目标MAC地址。
以外网采用广播的形式将数据包发送给子网内所有主机,主机网卡拿到数据包解析目标MAC地址,如果是自己则进行下一步处理,否则丢弃。

2.网络层

IP数据包头部为固定20字节,包含了源IP地址和目标IP地址。
通过DNS服务器解析域名获得目标IP
IP协议
IP地址=网段地址+主机地址
IP地址与子网掩码按位与运算可以得到网段信息,例如IP:192.168.150.14,子网掩码:255.255.255.0,则该子网网段为192.168.150.0。
ARP协议
地址解析协议,根据IP地址获取MAC地址的网络层协议。
ARP会发送一个数据包,包含源IP地址,到网络访问层后封装了源MAC地址,由于不知道目标MAC地址,所以目标MAC地址为FFFFFFFF。以外网广播数据包到子网内的每一台主机网卡,主机取出目标IP与自己比较,如果是自己则相应回自己的MAC地址,否则丢弃。ARP收到响应后得到目标MAC地址,正常发送数据包。
路由协议
如果源IP和目标IP在同一个子网内,则可以通过ARP的形式获取到目标MAC地址并发送数据包。但是不在一个子网内的话,就需要以外网将数据包发送给网关进行路由转发。通过目标IP和路由表,可以获得子网内的网关IP,通过ARP可以获得网关的MAC地址并将数据包发送给网关进行路由。连接多个网关的设备即是路由器,路由器根据目标IP和自己的路由表便可获得转发的地址。

3.传输层

网络访问层封装了MAC地址,网络层封装了IP地址,现在还需要知道端口来确定数据包最终由目标的哪一个应用程序来处理。
UDP协议
UDP数据包长度为8字节,包含源端口和目标端口。
UDP协议没有确认机制,可靠性差,但传输效率高,适用于允许数据丢失的场景。
TCP协议
即传输控制协议,是一种面向连接的、可靠的、基于字节流的通讯协议。
TCP协议在UDP的基础上增加了建立连接的三次握手和断开连接的四次挥手。
三次握手:
C => S
第一次握手,服务端确定自己的接收能力,客户端的发送能力
S => C
第二次握手,客户端确认自己的发送能力和接收能力,确认服务端的发送能力和接收能力
C => S
第三次握手,服务端确认自己的发送能力,客户端的接受能力
四次挥手:
C => S
客户端发送断开连接请求,表示自己不再发送数据,但可以继续接收数据
S => C
服务端接到请求,响应表示自己受到请求,继续发送数据
S => C
服务端发送请求,表示自己已不再发送数据,此时等待客户端响应
C => S
客户端接收到请求,响应表示自己收到请求,进入time-wait,2MSL后close,服务端收到请求进入close
PS:等待2MSL的目的是因为方式网络的不可靠性,如果客户端没有收到第二次响应,会重新发 送请求。客户端等待2MSL确定服务端没有重发后进入close。

4.应用层

经过前三层协议,数据包已经可以从源应用程序发送到目标应用程序,应用层定义了各种协议解析字节流,规范数据格式。常见的有HTTP、FTP、SMTP。
HTTP协议
请求报文:请求方式、URL、协议版本、请求头和请求体。
URL中包含域名和应用程序名
请求头部包含期待相应的数据格式(Accept)和请求数据格式(Content-Type)
响应报文:协议的版本、成功或者错误代码、服务器信息、响应头和响应体。
响应头包含响应数据格式(Content-Type)
HTTPS协议
。。。

5.全流程

当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上了双方的IP地址,确认了双方的网络位置;最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。

参考文章:
https://www.cnblogs.com/onepixel/p/7092302.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值