OSI七层协议和TCP的三次握手和四次挥手

局域网通信使用的是mac地址,出局域网通讯需要使用ip地址。

mac 全球唯一。

OSI7层协议

OSI:通讯标准(互联网通信协议),通信需要遵循7层协议(还有会话层和表述层)
应:应用层
传:传输层(数据段)
网:网络层(数据包)
数:数据链路层(数据帧)
物:物理层(数据位bit)

传输过程就是层层包装和层层解封的过程。

各层协议小结:

通信传输必须要知道双方的ip地址。

  • 应用层
    1.为终端应用提供的协议,如浏览网页的HTTP,邮件的SMTP,文件传输的FTP,通过程序间的各种协议将数据请求发送给传输层(程序之间的互动是靠端口来实现的)
    2.端口:网卡和应用程序关联的编号
    3.发送时的源端口是随机的,但目标端口是固定的。ip和端口必然是在一起的。
    4.将指定接收程序的目标端口(指定) 以及协议,送至网络层。

  • 传输层
    指定源ip(会在传输的过程中不断变换)和目标ip

  • 网络层
    判断目标ip的广播域(如果在同一广播域则直接传输,如果不在,则将源ip变为网关ip),目标ip地址不变,获取目标ip的mac地址

  • 数据链路层
    指定源mac(会在传输的过程中不断变换)和目标mac(会根据路由表信息不断变换) 打包分组后以电信号的方式进行传输

传输详细总结

每个接收设备都要执行OSI 7层标准。
网线:实现数据报文的传输
物理设备:通过解析数据报文最终传输至另一端,实现跨局域网通信。
物理层:
1层设备是主机
2层设备是交换机(实现多台主机在同一局域网内通信)
3层设备是网关和路由器(通过网线传输数据,路由之间存在路由协议)
主机连着交换机,交换机连着网关,网关连着路由器,路由器连着互联网。
路由是实现跨局域网通信最关键的设备,起承转合。

  • 数据链路层
    将打包好的数据以电信号的方式传递到交换机

  • 网络层
    首先本地电脑会根据数据包检查目标ip是不是在本地局域网
    如果是则通过广播寻址,直接将报文传递到指定的主机
    如果不是则先获取网关的mac地址,(如何获取网关mac,通过arp协议发送一个特殊的广播mac地址,arp -a 查看mac地址) 将目标mac地址替换为网关的mac地址,本地封装数据后将报文发送至交换机 (因为局域网通信主要靠mac地址,所以只有获取网关的mac地址才能将本地的数据传送至网关,再由网关进行下一步操作)

    交换机拆解报文发现目标mac是网关,则会将报文发送至网关。

    网关收到报文发现目标mac是自己,就会继续解包,识别报文内的目标ip地址是不是本机,如果不是则重新封装,将源ip地址转换为网关的WAN地址,将源mac转换为网关的mac,目标mac则会根据路由表信息(相当高德地图的线路规划)自动更换,目标ip地址不变,(mac地址根据每一次的变化产生新的变化),直到送到目标的网关,然后通过广播的方式,查到目标IP地址,将数据传输过去。

  • 传输层
    识别程序端口,将数据传输至指定程序。端口是程序和网卡关联的编号
    本机程序请求时使用的端口是随机的,但目标端口必须固定。

  • 应用层
    为终端应用提供的协议,如浏览网页的HTTP,邮件的SMTP,文件传输的FTP,通过程序间的各种协议将数据或请求发送给传输层(程序之间的互动是靠端口来实现的)。

网关和外界通信走的是路由协议

IP地址/掩码:掩码限定了同一个广播域内可使用的ip地址数量。

DNS域名解析
可以解析域名获取目标程序的ip和端口

TCP可靠数据传输协议

TCP:虚拟链路,由于每次通讯都要拿到IP和端口,意味着每次都需要查找,建立好虚拟链路下次两台主机之间就可以直接传递数据。

通道的建立是相互的,所以就有了TCP协议的三次握手

三次握手

先发出建立邀请的是客户端,接收的服务端,没有规定谁必须是客户端或服务端,
syn(标志位)=1,1是个变量,1就代表是请求包
ack(标志位)=1,确认请求。
第一次握手:客户端向服务端发送建立链路的确认邀请,
第二次握手:
服务端回执确认请求的同时向客户端发送服务端向客户端的建立链路申请。
第三次握手:客户端向服务端发送确认建立的回执。

序号(seq)和确认号(ack),TCP协议为了实现可靠传输,通信双方需要判断自己已经发送的数据包是否被对方接收,如果没收到就要重发,所以就要用到,序号和确认号。
假设序号是123那么确认号就是123+1,告诉发送方我已经收到了你发送的数据,下一个序号从124开始。服务端和客户端各有自己的序号

四次挥手

既然通道建立了,那就需要断开,建立是相互的,那么断开也是相互的,所以就有了4次挥手。
断开请求:fin=1
回执请求:ack=1
当客户端发送断开请求后,服务端回执确认断开。这时断开的是客户端到服务端的链路。 服务端要断开,也要发送断开请求,由客户端回执确认,这样,通道才算完全断开。但服务端不会立刻断开,要等数据全部传输完成才会断开, 这就是TCP的4次握手。

TCP的10种状态

netstat -an 查看状态

三次握手的状态

listen 监听 服务端
syn_sent 发送 客户端
syn_recv 接收 服务端
established 已建立链接 服务端或客户端

四次挥手的6种状态

fin_wait1 客户端发送断开链接请求
close_wait 服务端接收请求,但不会立刻回执,目前是等待状态,等待数据传输完成,就会向客户端发送确认断开回执。
fin_wait2 客服端确认与服务端链接已断开

last_ack 服务端向客户端发送断开链接请求
time_wait 客户端接收请求,但不会立刻回执,目前是等待状态,等待数据传输完成,就会向客户端发送确认断开回执。
close 关闭,双向通道关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值