传输层是国际标准化组织提出的开放系统互连(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. Xray写POC插件

    漏洞环境 https://www.vulnhub.com/ https://github.com/vulhub/vulhub https://github.com/QAX-A-Team/Weblogi ...

  2. TortoiseSVN安装和使用(转)

    http://blog.csdn.net/Zhihua_W/article/details/64904692?locationNum=2&fps=1 https://www.cnblogs.c ...

  3. 龙六网络科技有限公司(Dragon six Network Technology Co., Ltd.)

    龙六网络科技有限公司(Dragon six Network Technology Co., Ltd.)

  4. Flutter 一些常用第三方库、插件

    网络请求 http ^0.12.0+2 https://pub.dev/packages/http https://github.com/dart-lang/http 该软件包包含一组高级函数和类,可 ...

  5. Teaset-React Native UI 组件库

    GitHub地址 https://github.com/rilyu/teaset/blob/master/docs/cn/README.md React Native UI 组件库, 超过 20 个纯 ...

  6. 《C语言程序设计》课程教学目录

    <C语言程序设计>课程教学目录 不要去精确定义单个论题,应将一整套问题组织成体系.--黎曼(1826-1866)德国著名数学家 教学过程 2018年秋季学期 C语言程序设计I-第一周教学 ...

  7. SSM整合-配置文件

    使用工具:maven.idea.jdk8.mysql.tomcat9.0 初学ssm框架,配置文件的配置目录:                                     其中genera ...

  8. Git master合并分支时提示“Already up-to-date”

    Git master合并分支时提示"Already up-to-date" ​ 在使用Git把当前分支合并到master提示"Already up-to-date&quo ...

  9. Anaconda中安装了Libtiff模块,但运行程序显示ModuleNotFoundError: No module named 'libtiff'

    出现问题:Anaconda中已经用[conda install libtiff]命令安装了libtiff,并且利用命令[conda list]发现libtiff确实存在,但在pip中却不存在[pip ...

  10. 使用scrapy框架做赶集网爬虫

    使用scrapy框架做赶集网爬虫 一.安装 首先scrapy的安装之前需要安装这个模块:wheel.lxml.Twisted.pywin32,最后在安装scrapy pip install wheel ...