• TCP/IP协议概要沉淀---链路层/IP层


    按照TCP/IP的七层分类,下图摘自《Linux内核网络栈源代码情景分析》:

    (一)链路层

    链路层的作用:为IP模块发送和接收IP数据报,为ARP模块发送ARP请求和接收ARP应答。从内核的代码层面来看,链路层主要是提供针对物理层的访问各种接口卡的驱动程序。属于设备驱动模块。TCP/IP支持不同的链路层协议,取决于网络所使用的硬件,比如“以太网”“令牌环网”“FDDI”以及“RS-232串行线路“等。

    以太网是当今TCP/IP采用的主要的局域网技术。(以太网可以用于广域网么?)

    问题:MTU为什么会在链路层?

    以太网和802.3对数据帧的长度都有一个限制,其最大值分别为1500和1492字节,链路层的这个特性称为MTU,最大传输单元。如果IP层有一个数据报要传,数据报的长度比链路层的MTU还要大,那么IP层就需要进行分片,把数据分成若干片。 

    一些典型的MTU值:

    FDDI                                   4352

    以太网                                  1500

    IEEE802.3/802.2                         1492

     

    (二)IP层

    IP层不可靠的意思是不能保证IP数据报能够成功的到达目的地,如果发生比如路由器缓冲区满这种错误,则丢弃该数据报,然后发送ICMP消息给信源端。任何要求可靠性的服务都必须由上层TCP提供。

    无连接的意思是IP并不维护任何后续数据报的状态信息,每个数据报的处理是相互独立的。另外的意思是,IP数据报可能不按发送顺序接收,比如A B前后两个数据报选择了不同路由,那边B可能先A到达目的端。

    IP首部有20个字节。

    包含版本号,IP报长度(16个字节,也就是最长是65536。虽然IP层最大允许65536的数据报,但是一般的MTU会对他进行分片,而且TCP一般也会对用户数据进行分片,因此这个一般不会影响TCP。另外UDP的应用一般都限制数据报的长度为512字节,所以不会对UDP的长度有影响

    TTL(time-to-live):生存时间字段设置了数据报可以经过的最多路由数,制定了数据报的生存时间,每经过一个路由,TTL就减一。当此值为0时,数据报就会被丢弃,并发送ICMP报文通知源主机。

    在一般的体制中,IP可以从TCP/UDP/ICMP和IGMP接收数据报(即在本地生成的数据)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)。IP层在内存中有一个路由表,每次收到一份数据报并进行发送时,都需要对该表搜索一次。当数据报来自某个网络接口时,检查目的IP地址是不是主机IP之一或者是广播地址。如果是就送到IP首部协议所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么(1)如果IP层被设置成了路由功能,就对数据报进行转发(2)否则数据报丢弃。

    解析来看一下如果作为路由器,协议栈会怎么工作?

    先看下路由表,首先1)destnation目的IP地址,是一个完整主机地址,也可以是一个网络地址。2)下一站路由器IP地址。3)标志:指明是主机地址还是网络地址。4)并为数据报传输指明一个网络接口,如eth0。

    IP路由选择主要要做的是:

    1)搜索路由表,找与目标地址完全匹配的项。

    2)寻找路由表中与目标网络号相匹配的项。

    3)最后查找default项。

    当找到匹配的路由表后,数据报被送到以太网驱动程序,以太网程序会从ARP协议中获取目的IP地址的MAC地址,数据报会被以太网驱动程序从到对应的MAC地址上。

    问题:ARP为什么会在IP层?

    ARP为IP地址到对应的硬件地址之间提供动态映射,IP层必须依靠ARP协议来获取数据链路层的硬件地址。RARP地址为那些没有磁盘驱动器的系统使用,它将数据链路层地址转化为IP地址。

    ARP是ARP服务在它认为需要解析新的物理地址的时候,发送一份称为ARP请求的以太网数据帧给以太网上的每一个主机,这个过程称为广播。ARP发送包含目的地址IP的数据报,意思是”如果你是这个IP的拥有者,请回答你的硬件地址“。

    arp -a 确认arp高速缓存是空的,这就确保了IP操作需要重新发起ARP请求处理。

    问题:ICMP(IP控制报文协议)的作用?

    ICMP被认为是IP层的一部分,它传递差错报文以及其他需要注意的信息,用来辅助IP层的工作。ICMP报文通常被IP层或者更高层协议(TCP UDP)等使用。

    ICMP支持的类型描述有:

    1)ping的回显应答以及ping的请求回显 2)目的不可达(包括主机不可达 网络不可达 端口不可达等)3)重定向 4)超时等。。

    ping程序是发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。大多数TCP/IP实现都在内核中支持Ping服务器。另外,ping程序也支持查看IP记录路由的机会,大多数不同版本的ping程序都提供-R选项,以提供记录路由的功能。

    (三)UDP/TCP

  • 相关阅读:
    interface——关于虚函数的内存分配
    [asp.net]网页与服务器的交互模型
    C#下把txt文件数据读进sql server中存储所遇到的乱码问题
    安装window 7 续 ~~~
    ASP.NET中对SQLITE数据库进行插入操作后返回自增的ID
    非IE浏览器下让界面变灰色
    ASPNET目录权限控制
    自己封装的Access数据库的操作类(AccessHelper)
    用WIN7发现的问题(AppHangB1)
    [原创视频]牛腩新闻发布系统(续)
  • 原文地址:https://www.cnblogs.com/minihaohao/p/5234474.html
Copyright © 2020-2023  润新知