传输层是国际标准化组织提出的开放系统互连(OSI)参考模型中的第四层。该层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。其功能紧密地依赖于网络层的虚拟电路或数据报服务。传输层定义了主机应用程序之间端到端的连通性。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层,因为它是源端到目的端对数据传送进行控制从低到高的最后一层。

传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol) 。传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。

     本篇文章主要讲述传输层协议TCP连接的建立(三次握手)和断开(四次挥手),与路由器的数据转发原理(封装过程)。

1、TCP建立连接的过程称为三次握手,我们可以通过下图来了解TCP三次握手的过程:

从图上我们可以看出,PC1要与PC2建立通讯连接,要经过3个步骤,这个三个步骤我们就称为三次握手。经过这3个握手PC1和PC2才可以真正通讯,传输数据。

首先我们要先了解在TCP报文格式中比较重要的几个标志位,①、ACK:确认位(确认序号位,当该位为1时,用于确认发送方的数据)。②、SYN:建立连接的请求标记(同步序号位,TCP需要建立连接时将该值设为1)。③、FIN:请求断开标记(当TCP断开连接时将该位置为1)。这里我们主要了解这三个标志位。

当PC1想要与PC2建立连接时,从图中可以看到PC1首先发送SYN报文,该位置为1,请求与PC2建立连接,这个时候PC2接收到请求,通过查看SYN报文位置知道PC1想要建立连接,PC2回应PC1请求,并发送建立连接请求(两台PC机建立通讯是双向的,当一台PC请求建立连接时,另一台PC同样会请求建立连接),PC2发送SYN+ACK报文,该位置同样为1,PC1接受到PC2确认回应与请求后确认PC2信息位置,然后回复确认,发送ACK报文,位置为1。经过这3次握手过程,PC1与PC2成功建立连接。

2、TCP断开连接的四次挥手,我们可以通过下图来了解TCP四次挥手的过程:

上图中我们可以看到PC1和PC2断开连接的过程其实和上面我们讲述的TCP三次握手的过程差不多,不过中间多了一个步骤3,这里也就是我们要理解的TCP半关闭的概念,我们可以通过关闭浏览网站这个过程来理解TCP半关闭的概念,同时来阐述TCP断开连接四次挥手的过程。

在这里我们把PC2看做是一台服务器,当我们在浏览网页时,数据是双向传输的,PC1发起请求,服务器响应请求并发送数据提供PC1浏览查看,当PC1关闭浏览器时,首先发送FIN/ACK报文,位置位为1,确认关闭连接,服务器接收请求,然后发送ACK报文,位置为1,确认请求,这个时候PC1关闭浏览器窗口,但是服务器还没有断开与PC1的连接,还会继续向PC1发送数据,断开的只是PC1单向的连接,这也就是TCP半关闭状态,当PC1断开连接后,服务器重复PC1操作,发送FIN/ACK报文,位置为1,请求确认断开连接,PC1接收到服务器请求,并发送ACK报文,位置为1,确认请求,这个时候服务器与PC1断开连接,经过这四个步骤,PC1与服务器(PC2)断开连接,这就是我们说的TCP断开连接的四次挥手。

3、路由器的数据转发原理(封装过程),通过下图来讲述路由器的数据转发原理:

路由器转发封装过程我们也称之为路由器的重封装过程,如上图所示,主机A要把数据发送给主机B要经过两个路由的转发来完成,在这个转发过程中是经过三个不同网段的转发最终到达主机B,在同一个段中传输时就是数据链路层(二层)的工作原理,数据链路层是以数据帧的格式通过封装源MAC地址与目标MAC地址发送ARP寻找目标MAC地址进行转发,如上图,主机A发送数据到主机B,要经过三个不同的网段通过两次重封装来完成数据发送。
①、首先主机A通过ARP,找到默认网关路由A的MAC地址,然后封装源IP地址(192.168.1.2/24)与目标IP地址(192.168.2.2/24),源MAC地址(…11-11),目标MAC地址(…22-22),经过E0端口发送到路由A中。
②、路由A接收到数据,通过解析MAC地址,查看主机A发过来的目标IP地址,在路由表中查找目标IP网段,当查找到这个网段后,知道应该从E1接口转发出去,然后路由A重新封装MAC地址,源IP地址与目标IP地址不变,这个时候封装的源MAC地址为…33-33,目标MAC地址为:…44-44,通过E1接口发送给路由B。
③、路由B接受到数据后与路由A同样操做,解封MAC地址,查看目标IP地址,同时在路由表中查找目标IP网段,找到目标IP网段接口E0,然后通过ARP,获得主机B的MAC地址,并封装MAC地址,源MAC地址为…55-55,目标MAC地址为…66-66,源IP地址与目标IP地址不变,通过E0接口转发到主机B,这个时候主机B接受到主机A发过来的数据,通过解析MAC地址,查看源IP与目标IP地址,确定是否是发给自己的数据。

通过上面所述的过程通过三次重新封装MAC地址,源IP地址与目标IP地址不变,完成数据的转发,这就是路由器的重封装过程,也就是路由器的数据转发原理(封装过程)。

TCP的三次握手和四次挥手与路由器(三层)转发原理的更多相关文章

  1. TCP的三次握手与四次挥手

    TCP的三次握手与四次挥手 一.TCP(Transmission Control Protocol 传输控制协议) TCP是面向对连接,可靠的进程到进程通信的协议 TCP是提供全双工服务,即数据可在同 ...

  2. 你应该这么理解TCP的三次握手和四次挥手

    前言: TCP协议是计算机的基础,他本身是一个非常非常复杂的协议. 本文只是蜻蜓点水,将从网络基础以及TCP的相关概念介绍开始,之后再将三次握手,四次挥手这些内容来阐述. 最后介绍一些常见问题,并给出 ...

  3. TCP/IP三次握手与四次挥手的正确姿势

    0.史上最容易理解的:TCP三次握手,四次挥手 https://cloud.tencent.com/developer/news/257281 A 理解TCP/IP三次握手与四次挥手的正确姿势http ...

  4. TCP的三次握手与四次挥手详解

    TCP的三次握手与四次挥手是TCP创建连接和关闭连接的核心流程,我们就从一个TCP结构图开始探究中的奥秘  序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序 ...

  5. 【图解】给面试官解释TCP的三次握手与四次挥手-Web运用原理及网络基础

    作者 | Jeskson 来源 | 达达前端小酒馆 轻松了解HTTP协议 为什么要学习网络协议呢?为什么要学习计算机完了呢?显然这很重要,至少能够帮助你找到工作的原因之一,学习网络知识点太多太多,没有 ...

  6. TCP的三次握手与四次挥手笔记

    TCP的三次握手与四次挥手笔记 TCP Flags URG: 紧急指针标志 ACK:确认序号标志 PSH:push标志 RST:重置连接标志 SYN:同步序号,用于建立连接过程 FIN: finish ...

  7. TCP的三次握手与四次挥手理解及面试题

    TCP的三次握手与四次挥手理解及面试题(很全面) 转载自:https://blog.csdn.net/qq_38950316/article/details/81087809 本文经过借鉴书籍资料.他 ...

  8. TCP 的三次握手和四次挥手

    参考资料: 1.TCP的三次握手与四次挥手理解及面试题: 2.Http协议三次握手和四次挥手: 3.TCP通信的三次握手和四次撒手的详细流程(顿悟) 前置: 序号(也称序列号) - Sequence ...

  9. WireShark抓包分析以及对TCP/IP三次握手与四次挥手的分析

    WireShark抓包分析TCP/IP三次握手与四次挥手 Wireshark介绍: Wireshark(前称Ethereal)是一个网络封包分析软件.功能十分强大,是一个可以在多个操作系统平台上的开源 ...

随机推荐

  1. adb(Andorid Debug Bridge)安装和使用

    以下是adb工具包最新2017Google官方版下载地址: ADB和Fastboot for Windows https://dl.google.com/android/repository/plat ...

  2. [US Open 2004][luogu2342] 叠积木 [带权并查集]

    题面 洛谷传送门 思路 害 学了4年多OI,第一次知道还有带权并查集这个东西 wtcl 这个玩意儿的原理和详细实现,可以参考这个博客:带权并查集传送门 这道题,就是在带权并查集的基础上,加个维护每个集 ...

  3. 集合运算 & 聚合函数

    SQL 查询之集合运算 & 聚合函数   1.集合运算 1.1.并集运算 UNION 1.2.差集运算 EXCEPT 1.3.交集运算 INTERSECT 1.4.集合运算小结 2.聚合函数 ...

  4. 好消息!iconfont+开始支持彩色图标

    想必关注iconfont的同学都知道,iconfont最近做出了一次重大升级,升级成为iconfont+了,而这次更新,iconfont+居然开始支持彩色图标,这意味着我们能够使用更具有特色更形象的全 ...

  5. vue之项目打包部署生产环境前需要注意的问题!

    我们在本地写好代码,然后打包上线前需要修改相关的配置文件,否则项目无法正常运行,主要是路径不对,找不到相关文件. 1.修改config > index.js(如下图) 2.在build > ...

  6. mogodb数据库简单的权限分配

    mongdb数据库默认不需要权限认证,但为了安全起见,最好设置下需要权限认证,启动的时候设置auth=true即可. 推荐通过mongodb.conf配置文件的形式启动mongodb   进入mong ...

  7. [转帖]InnoDB与MyISAM等存储引擎对比

    InnoDB与MyISAM等存储引擎对比 https://blog.ouyangsihai.cn/innodb-yu-myisam-deng-cun-chu-yin-qing-dui-bi.html ...

  8. [转帖]iis最大并发连接数、队列长度、最大并发线程数、最大工作进程数

    iis最大并发连接数.队列长度.最大并发线程数.最大工作进程数 2018-10-17 12:49:03 牛兜兜 阅读数 2952   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...

  9. 在Asp.Net Core中集成Kafka(中)

    在上一篇中我们主要介绍如何在Asp.Net Core中同步Kafka消息,通过上一篇的操作我们发现上面一篇中介绍的只能够进行简单的首发kafka消息并不能够消息重发.重复消费.乐观锁冲突等问题,这些问 ...

  10. 剑指offer22:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

    1 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 2 思路和方法 使用一个队列存放节点.先将根节点加入到队列中,然后循环遍历队列中的元素,遍历过程中,访问该节点的左右子节点,再将左 ...