zoukankan      html  css  js  c++  java
  • TCP/IP协议的数据传输过程详解——IP与以太网的包收发操作

    MTU:一个网络包的最大长度,以太网中一般是1500字节;(含有头部长度,包括IP头部,TCP头部,不包括MAC头部)

    MSS:除去头部后,一个网络包所能容纳的TCP的数据的最大长度

    下图为TCP/IP软件的分层结构:

    其中,IP中ICMP协议用于告知网络包传送过程中产生的错误及各种控制信息,ARP协议用于根据IP地址查询相应的以太网的MAC地址。

     TCP模块在执行连接、收发、断开等各阶段的操作中,都需要委托IP模块将数据封装成包发送给通讯对象。

    下面介绍一下网络包的一些基本知识:

    包是由头部和数据两部分组成。

    头部包含目的地等控制信息,头部后面就是委托方要发给对方的数据。

    下面是TCP/IP包的结构:

     

     

    简单区分一下路由器和集线器的区别:

    它们在传输网络包的时候有各自的分工:

    1、路由器是根据IP规则传输包的设备,根据目标地址判断下一个路由器的位置

    2、集线器是按照以太网规则传输包的,在子网中将网络包传到下一个路由。

    下图是包收发操作的整体过程:

    包收发操作的起点就是TCP模块委托IP模块发送包的操作,这个委托的过程就是在TCP模块在数据块的前面加上TCP头部,然后整个传递给IP 模块,这部分就是网路包中的内容。

    与此同时,TCP模块还需要指定通信对象的IP地址,收到委托后,IP模块会将包的内容当做一个整块数据,在前面加上包含控制信息的头部。

    IP模块会添加IP头部和MAC头部这两个,其中,IP头部中包含IP协议规定、根据IP地址将包传送到目的地的控制信息;MAC头部包含通过以太的局域网将包传输至最近路由器所含的控制信息。

    IP头部包含很多控制信息,其中重要的是包将发送到哪里的IP地址,这是应用程序提供的;IP头部中还需要填写发送方的IP地址,需要IP模块利用路由表进行判断,即判断发送使用的网卡。

    MAC地址是在网卡生产时写在ROM里面的,是全世界唯一的一串地址,是生成网卡时写入的,根据IP地址查询MAC地址。

    我们通过ARP协议查询目标路由器的MAC地址,发送广播来查询即可:问:**IP地址是谁的? 答:**IP地址是我的,我的MAC地址是**。为了防止网络中增加很多ARP包,我们会有一个ARP缓存空间中保存查询到的MAC地址。

  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/fish-101/p/10505177.html
Copyright © 2011-2022 走看看