2.5 IP和以太网的包收发操作

2.5.1 包的基本知识

  1. 首先,包由头部和数据两部分构成,头部包含目的地址等控制信息。
  2. 一个完整的包包括MAC头部、IP头部、TCP头部、数据块。
  3. 转发设备根绝头部的目的地址等控制信息判断接下来发送到哪里。
  4. 路由器是按照IP规则传输包的设备,集线器、交换机是按照以太网规则传输包的设备。
  5. MAC头部用于以太网协议,IP头部用于IP协议。
  6. IP协议先根据IP头部找到下一个路由器的位置,然后IP协议会查找下一个路由器的MAC地址,并将这个地址写入MAC头部(这样以太网协议就知道包要发送到哪个路由器了),再委托以太网协议传输包。
  7. 所以在每个路由器收到包的时候,MAC头部会先被舍弃,然后再次发送的时候又会加上包含新MAC地址的新MAC头部。
  8. 以太网协议层可以被替换成无线局域网、ADSL、FTTH等,它们都可以帮助IP协议来传输网络包,因此将IP和负责传输的网络分开,可以更好地根据需要使用各种通信技术。

2.5.2 包收发操作概览:IP模块

  1. TCP模块将TCP头部和数据块的整体交给IP模块后,IP模块负责添加IP头部和MAC头部。
  2. IP模块将封装好的包交给网络硬件,这里统称为网卡。
  3. 网卡将这一串由0和1组成的数字信息转换为电或光信号发送出去。
  4. 无论要收发的包是控制包还是数据包,IP对各种类型的包的收发操作都是相同的。

2.5.3 生成包含接收方IP地址的IP头部

  1. IP包头部最重要的内容就是IP地址,IP地址是由TCP模块告知的。
  2. IP头部字段:版本号、头部长度、服务类型、总长度、ID号、标志、分片偏移量、生存时间、协议号、头部校验和、发送方IP地址、接收方IP地址、可选字段
  3. IP表也叫路由表,通过route print命令查看。

2.5.4 生成以太网用的MAC头部

  1. MAC头部字段:接收方MAC地址、发送方MAC地址、以太类型。
  2. IP模块在生成IP头部之后,会在它前面再加上MAC头部。
  3. IP模块根据路由表gateway栏的内容判断应该把包发送给谁。

2.5.5 通过ARP查询目标路由器的MAC地址

  1. ARP:Address Resolution Protocol,地址解析协议。
  2. 利用ARP对子网内所有设备发送广播询问目标IP地址是谁的,请求返回对方的MAC地址。
  3. ARP利用缓存减少ARP查询次数,缓存过期时间只有几分钟。

2.5.6 以太网的基本知识

  1. 以太网是一种为多台计算机能够彼此自由和廉价地相互通信而设计的通信技术
  2. 以太网的三个基本性质:将包发送到MAC头部的接收方MAC地址代表的目的地,用发送方MAC地址识别发送方,用以太类型识别包的内容。

2.5.7 将IP包转换成电或光信号发送出去

  1. 网卡驱动程序在计算机开机的时候对硬件进行初始化操作,包括硬件错误检查、设置MAC地址等步骤。
  2. 网卡的ROM保存着全世界唯一的MAC地址,这是在生产网卡时写入的,这个地址由网卡驱动程序读取并分配给MAC模块。
  3. 网卡主要包括:缓冲区、MAC、PHY(MAU)、RJ-45接口、ROM等结构。

2.5.8 给网络包再加3个控制数据

  1. 首先,网卡的MAC模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列FCS。
  2. 报头是一串像101010...这样1和0交替出现的比特序列,长度为56比特,它的作用是确定包的读取时机。
  3. 起始帧分解符的末尾比特排列有少许变化,接收方以这一变化作为标记,从这里开始提取网络包数据。
  4. 末尾的FCS,用来检查包传输过程中因噪声导致的波形紊乱、数据错误,它是一串32比特的序列,通过一个公式对包中从头到尾的所有内容进行计算得来。

2.5.9 向集线器发送网络包

  1. 网卡的MAC模块生成通用信号,然后由PHY(MAU)模块转换成可在网线中传输的格式,并通过网线发送出去。
  2. 发送和接收同时进行的方式叫做全双工,相对地,某一时刻只能进行发送或接收其中一种操作的叫作半双工。
  3. 集线器是半双工模式,如果同时有收发操作,两组信号就会相互叠加,无法彼此区分出来,这就是所谓的信号碰撞。当发生碰撞时,发送操作会终止,等待重新发送。

2.5.10 接收返回包

  1. 首先PHY(MAU)模块会将信号转换成通用格式并发送给MAC模块。
  2. MAC模块再从头开始讲信号转换成数字信息并存放到缓冲区中。当到达信号的末尾时,还需要检查FCS。接下来MAC模块会检测接收方MAC地址是否和自己的地址一致。
  3. 接下来,网卡会通过中断机制通知计算机收到了一个包。
  4. 网卡驱动被中断处理程序调用后,会从网卡的缓冲区取出收到的包,并通过MAC头部中的以太类型判断协议的类型。
  5. 网卡根据以太类型将包交给对应的协议栈处理。

2.5.11 将服务器的响应包从IP传递给TCP

  1. 首先IP模块检查IP头部,确认格式是否正确,没有问题就查看接收方的IP地址。如果IP地址不是自己的地址,IP模块会通过ICMP消息将错误告知发送方。ICMP规定了各种类型的消息。
  2. 如果包经过了分片,所有分片的包在IP头部都具有相同的ID,此外IP头部还有一个分片偏移量,它表示当前分片在整个包中所处的位置。根据这些信息,在所有分片全部收到之后,就可以将他们还原成原始的包,这个操作叫做分片重组。
  3. 接下来TCP模块工作,根据收发IP地址和端口号查找套接字,然后根据套接字的通信状态,执行响应的操作(收发数据或连接断开等响应控制)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,019评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 12,980评论 6 174
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,903评论 1 13
  • 网络层简介 1. 概念 为解决经由多条链路的交付问题,从而设计了网络层。其主要负责主机到主机的交付,并且在分组经过...
    顾慎为阅读 2,976评论 0 0
  • 第二章 物理层 频分复用:频分复用的用户在同样的时间占用不同的带宽资源(频率带宽) 时分复用:时分复用的用户在不同...
    PramaWells阅读 3,255评论 1 3