传输层是国际标准化组织提出的开放系统互连(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. AD域 域管理员常用命令

    简介: 暂时我需要管理60台终端计算机,但是分布的比较广泛,在我们单位整个场区零零散散的分布,巡检一圈仅步行时间就超过30分钟. 为了更好的管理终端计算机,现在正在实验性的配置域,用域来管理这些计算机 ...

  2. HTML中设置在浏览器中固定位置fixed定位

    之前的博文 HTML布局排版之制作个人网站的文章列表,中链接到的文章本身,也需要返回到列表主页,可在每个文章页面加导航条,也可以只加个返回到列表主页的链接.刚开始是想在博文最下方,加个返回文章列表的链 ...

  3. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  4. 【计算机视觉】基于Shading Model(对光照变化一定不变性)的运动目标检测算法

    光照模型(Shading Model)在很多论文中得到了广泛的应用,如robust and illumination invariant change detection based on linea ...

  5. C++_没有STL不能解决的问题之——<algorithm>

    这个坑好大,慢慢写 一.非修改式序列操作 1.find() 在区间中查找出某元素第一次出现的位置(注意!!是返回地址值) int main(){ ]={,,,,,}; int *b; b=find(a ...

  6. Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)

    0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...

  7. Copy-On-Write技术

    通俗的解释,假定多方需要使用同一个资源时,没有必要为每一方都创建该资源的一个完整的副本,反而令多方共享这个资源,当某方需要修改资源的某处时,利用引用计数,把该处复制一个副本,再把跟新的内容写入该副本中 ...

  8. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  9. pytorch1.0实现RNN-LSTM for Classification

    import torch from torch import nn import torchvision.datasets as dsets import torchvision.transforms ...

  10. SQL 先固定特殊的几行数据之外再按照某一字段排序方法(CASE 字段排序(CASE WHEN THEN)

    查询用户表的数据,管理员用户始终在最前面,然后再按照CreateTime排序: SELECT TOP * FROM [dbo].[User] WHERE ParentID = '**' ORDER B ...