网络通信协议和层级关系应用

网络通信是我们交换数据的行为,既然是通信就要有规则,如你给我打电话,但是我告诉你停机了的手机号或者别人的手机号,你一定找不到我,所以需要制定一些规则来约束你我之间的通信,才能更好的交流,这就是协议。
TCP/IP五层模型

在这里插入图片描述

分别是:应用层,运输层,网络层,数据链路层,物理层
这五层我们可以理解为代项目中的层级调用,每层制自己的事情,并且层级之间有依赖关系,相辅相成。
我们来说一下每一层的作用。

应用层:

程序运行的地地方
定义协议,如http ftp等,定义了通信数据的基规则

运输层:即传输控制层

区分子网,建立端口对端口之间的通信:找到目标主机是为了建立通信,开辟资源,端口号区分目标主机上的程序,程序是和端口绑定的
为什么有了pid还需要端口号呢?因为pid是程序启动时随机分配的,虽然在本地唯一,但在网络中可能不是唯一的,并且随机性不好控制,所以在远程请求的时候有三大要素:主机协议端口号。

TCP/UDP协议

在这里插入图片描述
为什么说TCP是面向连接的,可靠的传输协议呢?
1.面向连接的:双方通过三次握手来建立虚拟连接,开辟资源,创建一组套接字
2.ack确认机制

TCP连接的三次握手和四次分手机制
三次握手:
客户端发送syn请求连接包到服务器
服务器返回ack+syn包表示自己已收到请求并连接到客户端
客户端发送ack确认包到服务器,双方开辟资源,创建一组套接字(创建port+IP port+IP双方的绑定关系)
四次分手:
客户端发送fin断开包到服务器
服务器返回ack确认包表示自己收到
服务器发送fin断开包到客户端
客户端返回ack确认包,双方断开链接,释放资源
问题:
为什么握手时三次,而断开时四次呢?
因为请求连接是单方面的(发起方表示愿意连接),一方是被动的,双方经过ack确认共三次,如你追女神,你是主动的,你就不用确认了,因为你的意愿是明摆的,只要女神同意,你们就可以在一起。
分手是四次的,因为需要双方都放手,并且上双方都确认,共四次。

传输中的状态标记
fin 关闭连接. [FP] [F]
syn 建立连接. 握手信号 [S]
ack 响应 确认包 [.]
psh 有data数据传输. [P]
rst 连接重置

网络层

IP+路由表
网络层只做两件事情
1.路由判定,找下一跳
2.封装源IP地址和目标IP地址。

路由表:
局域网是广播域,跨越广播域通过路由器通信
ip地址分为网络号和主机号,通过子网掩码按位与运算来确定源主机和目标主机是否在统一局域网内
IP数据包氛围head和data,ip数据包会直接放到以太网协议(帧)的data区域中(数据链路层)
在这里插入图片描述
IP地分为两部分,分别是网络号+主机号,两点中间一个字节,点分子节,一个字节8个二进制位,可表示为0-255

下一跳机制:(路由表的条目可以自己配置)
IP地址寻址,通过路由表寻找下一跳,此时分为两种情况,如果目标IP地址和本区域路由器的掩码做按位与运算(只要有0就返回0,均为1则返回1),如果结果匹配当前局域网网络号,那么直接发送,如果不是本区域网络号,相同的步骤匹配默认网关的掩码,局域网网关为下一跳,下一跳后继续获取路由表,再继续操作上述步骤,这样循环往复,最终跳到目标IP

数据链路层

区分目标主机
帧:包含head和data区域和帧尾,data包含IP数据包,以太网数据帧。
通过arp协议寻找目标对应的MAC物理地址,先根据本地arp缓存表获取,不存在发送广播目标收到后单播返回自己的mac地址。
数据链路层接收到网络层传来的数据包,不断确定跳点(跨越多个路由器,通过arp协议获取当前网段的下一跳Mac地址,不断更新源Mac地址和目标Mac地址),最终找到目标主机Mac地址。
ARP不可跨越网络,是不断的根据跳点在每一步的范围内广播(或本arp缓存表匹配)完成的。
在这个过程中目标IP地址不会变,mac地址会根据跳点不断更新

物理层

将数据帧转换为信号传递
硬件如:双绞线,电缆,光缆,无线电波等

最上面的图很清晰的表达了请求的过程和五层之间的依赖调用关系,最后在总结一下:

客户端:
应用层构建http报文段,然后交给运输层,
运输层给报文添加tcp首部,即tcp报文段,交给网络层
网络层给报文段添加IP首部,交给数据链路层
数据链路层添加首尾即帧
物理层将数据帧转换为信号传递给服务器
服务器:
接收到之后反向拆,得到数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值