网络协议入门

网络协议入门

一、网络协议分层

  • 协议分层(由上至下)
    • 应用层 Application layer
    • 传输层 Transport Layer
    • 网络层 Network Layer
    • 链接层 Link Layer
    • 实体层 Physical Layer
      layer

网络协议还有其他分层模型,可自行查阅

二、分层详解

  • 实体层 Physical Layer

    • 介绍
      • 实体层主要解决的是使用物理手段(光缆线、双绞线、无线电波等)把网络设备,例如PC,并传递0|1信号。
  • 链接层 Link Layer

    • 介绍
      • 链接层在实体层之上,主要解决的是规范化0|1信号的分组,使不同0|1信号组合可以表达不同且通用的意思(毫无规律的0|1信号没有意义,而不统一的信号分组规范不利于信息广泛传播)。
    • 以太网协议
      • 以太网协议制定具体的0|1信号分组规范
      • 以太网协议规定一组电信号构成一个数据包,叫做帧(Frame)。每一帧分成标头(Head)和数据(Data)两个部分。
      • 标头主要包含说明项,比如:发送者、接收者、数据类型等;标头长度固定为18个字节。
      • 数据是具体内容,数据长度46~1500字节。
      • 数据包长度范围64~1518字节,发送内容超过数据包长度,分割成多个数据包进行发送。
        Ethernet
    • MAC地址
      • 以太网规定入网设备都需要具备网卡接口,帧实际上是在物理网卡之间传递,网卡地址就是MAC地址。
      • 以太网协议同时规范了帧的具体格式,比如帧的标头应该包含发送者和接受者的设备网卡MAC地址。
      • MAC地址长度为48个二进制单位,通常用12个十六进制数表示。
        mac address
    • 广播(Broadcasting)
      • 以太网传输数据方式不是想象中的从PC1到PC2之间的精确传递,而是从PC1同时发送给PC2-PC6(假设局域网内总共有6台PC),这种发送方式叫广播。
      • 同时接收到上述数据包的网卡们,将自动对比标头部分接收者MAC地址是否和自己匹配,如果是则接收做进一步处理,否则将drop该数据包。
  • 网络层 Network Layer

    • 引入
      • 理论上,通过上述两层协议已经可以完成PC间数据传输。但延展一下这个想法,我们所有网络设备全部在一个子网络中,且数据均通过广播方式发送,这必然导致网络崩溃!
      • Internet是由无数子网络组合而成,在同一个子网络中数据通过广播发送,不同子网络数据是通过路由发送。
    • 介绍
      • 网络层主要解决不同子网络之间通信问题,网络层为PC重新分配了一个全新的地址,叫做网络地址,简称网址。
    • IP协议
      • ==IP协议定义具体的IP地址规范,IP数据包格式,包括如何判断两个不同IP地址是否在同一子网络中。==目前运用广泛的是IP协议第四版(IPv4)。
      • IP地址分为两部分,网络号和主机号,网络号决定不同PC是否在同一子网络内。IP地址和子网掩码做AND运算,可得到其网络号和主机号,不同IP地址和各自子网掩码做AND运算,得到各自网络号,网络号相同,则设备在同一子网络内。
    • IP数据包
      • IP数据包包含IP地址;同样也分为标头和数据两部分,标头包括版本、长度、IP地址等信息,长度20-60字节;数据则是具体内容;整个IP数据包最大为65535字节;由于IP数据包包裹在以太网数据包中,所以IP数据包超过1500字节,需分割为多个以太网数据包分开发送
        ip head data
    • ARP协议
      • 在以太网数据包发送时假设发送者知道接收者MAC地址,但真实情况下网卡A是无法凭空知道网卡B的MAC地址,ARP协议用于解决这个问题。
      • ARP本质是通过IP寻址的协议,址指的是MAC地址。以太网数据包在子网络内采用广播发送,网卡接收到数据包后对比接收者MAC地址是否是自身,否则丢弃。ARP协议发送以太网数据广播包在接收者MAC地址部分填写为FF:FF:FF:FF:FF:FF,网卡接收到全F的地址,将进一步取出数据包的中IP地址部分和自身进行匹配,不匹配则丢弃,匹配则做出回复,向发送者告知自己的MAC地址。发送者通过ARP协议找到子网络内接收者IP对应的MAC地址,如果接收者不在子网络内,则数据包将交给网关处理。
  • 传输层 Transport Layer

    • 引入
      • 有了MAC地址和IP地址,PC可以和同一子网络和不同子网络PC建立通信。但在实际应用场景中,通信是建立在PC上的应用程序之间,而一台PC一般同时存在多个应用程序(系统进程)。于是又引入了端口概念。
      • 端口:端口明确了从IP层上来的数据包是属于那个应用程序的,端口是使用网卡的程序编号。端口长度是16个二进制位,端口范围是0~65535,其中0到1023被系统占用。
    • 介绍
      • 传输层主要解决网络设备上应用程序之间的通信,也就是端口到端口的通信。
    • 传输层相关协议,常用的是UDP、TCP
    • UDP数据包:同样包括标头和数据,标头包含了端口信息,标头长度8个字节;数据为具体内容;UDP数据包总长度不超过65535字节,刚好装入IP数据包
    • TCP部分详见TCP协议详解,TCP数据包没有长度限制,但通常不建议超出IP数据包长度,避免切割
      udp_tcp head data
  • 应用层 Application Layer

    • 介绍
      • 传输层实现了端到端的数据包传递,应用层主要作用是规范应用程序的数据格式。
    • 应用层相关协议,常用的是HTTP、FTP等等
    • 应用层数据包理论上不限制长度。但为了保证网络效率,一般情况下应该避免IP数据包的切割

三、从使用角度讲解

  • PC网络配置
    • 配置静态IP地址
      • 计算机每次开机都使用相同的IP地址。配置静态IP地址参数需至少包括:本机IP地址、子网掩码、网关的IP地址、DNS服务器IP地址
    • 分配动态IP地址
      • DHCP协议负责分配动态IP地址,动态IP地址是相对静态IP地址而言,则使用者无需手动配置,子网内DHCP服务器自动负责分配
      • 动态IP地址分配流程
        1)以太网标头部分,发送者MAC地址为本机网卡MAC地址,接收者MAC地址为DHCP服务器网卡MAC地址,此时接收者MAC地址未知,故填入广播地址(FF-FF-FF-FF-FF-FF)
        2)IP标头部分,发送者和接收者IP地址均未知,故发送者IP地址设为0.0.0.0,接收者IP地址设为255.255.255.255(IP广播地址)
        3)UDP标头,发送者端口号为68,接收者端口号为67
        4)Data部分为dhcp应用层协议请求内容
        5)以太网数据包在子网内以广播发送,同一子网内所有PC均收到该数据包,查看以太网标头中接收者MAC地址为广播地址,所有PC会进一步对比IP标头数据,发现发送者IP为0.0.0.0且接收者IP为255.255.255.255,则DHCP服务器会继续处理该数据包,其他PC丢弃该数据包
        6)DHCP服务器将分配好的IP地址等信息,同样封装成以太网数据包做为DHCP请求响应返回给请求PC
        7)响应数据包中,以太网标头发送者MAC地址为DHCP服务器的网卡地址,接收者MAC地址为请求PC网卡地址
        8)响应数据包中,IP标头中发送者IP地址为DHCP服务器IP地址,接收者IP地址为255.255.255.255(IP广播地址)
        9)响应数据包中,UDP标头发送者端口号为67,接收者端口号为68
        10)响应数据包中,Data部分dhcp应用层协议响应内容
        11)PC接收到响应数据包,成功分配到IP地址、子网掩码、网关地址、DNS服务器参数,完成PC动态网络配置
        dhcp
  • 普通网页访问
    • 完成PC网络配置后,简述PC上网流程
      • 打开浏览器输入域名,例如:www.baidu.com
      • 访问DNS服务器(61.139.2.69)解析域名,获取目标网络ip地址,比如:119.75.217.109
      • 已知本机IP(192.168.2.100)和目的IP(119.75.217.109),通过与子网掩码(255.255.255.0)AND运算,计算结果分别为192.168.2.0、119.75.217.0,结论是不在同一子网络。则数据包交给网关转发,以太网数据包标头中接收者MAC地址为网关MAC地址
      • http协议在TCP协议之上,数据包示意图详见下
      • 根据http数据长度不同,http请求可能都会切分为多个IP包发送
        http
        http cut

补(1)数据包套娃

ethernet ip head data
ethernet ip udp_tcp head data
application head data

参考阮一峰日志:
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值