沙漏计时器型TCP/IP协议族,允许IP on everyting,即支持多种形式和物理层和数据链路层实现;同时支持多种多样的应用层协议,扩展了各式各样的服务。

IP协议(网际协议)

与IP协议配套使用的协议包括:

1)地址解析协议ARP(Address Resolution Protocol)

通过IP地址解析出物理地址,RAP协议的实现原理是在主机的ARP高速缓存中存放IP地址和物理地址的映射表,并根据实际主机的变动情况动态更新该映射表。

2)逆地址解析协议RARP(Reverse Address Resolution Protocol)

通过物理地址解析出IP地址,现在该功能已经包含到DHCP协议中,不再使用单独的RARP协议。

3)网际控制报文协议ICMP(Internet Control Message Protocol)

ICMP允许主机或者路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP数据包的数据,加上IP数据包的首部,组成IP数据包传输。

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。ICMP报文的前4个字节是统一格式的,共三个字段:类型、代码和校验和。

ICMP的一个重要应用就是分组间探测PING(Packet InterNet Groper),用来测试两个主机之间的连通性。PING使用ICMP回送请求与回送应答报文。PING是应用层直接使用ICMP,没有通过TCP或者UDP。

ICMP的另一个重要应用是tracerouter(Windows下为tracert命令),用来测试路由路径。

4)网际组管理协议IGMP(Internet Group Mgmt Protocol)

其中,ICMP和IGMP协议使用IP协议,而IP协议使用RARP和ARP协议。

IP数据包格式

路由选择协议

路由选择协议有两大类:

1)内部网关协议IGP(Interior Gateway Protocol)

即一个ISP内部使用的路由协议,如RIP和OSPF协议。

RIP(Routing Information Protocol)是一种基于距离向量的路由选择协议,RIP协议要求网络中的每一个路由器都要维护从它自己到其他目的网络的距离记录(通过的路由器数量,也叫跳数hop count),RIP协议允许一条路径最多只能包含15个路由器。

RIP协议使用UDP数据包进行传输,即UDP端口520。

2)外部网关协议EGP(External Gateway Protocol)

目前最常用的外部网关协议是BGP-4协议(边界网关协议)。

MAC地址

6个字节,高3字节为OUI(Organizationally Unique Identifier),也称为公司标识符;低3字节由厂家自行指派,称为扩展标识符(Extended Identifier)。

IEEE规定MAC地址第一个字节的最低位为I/G位,表示Individual/Group。当I/G位为1时表示组地址,用来进行多播;当I/G位为0时,表示一个单个站地址。

IEEE还规定MAC地址第一个字节的最低第二位为G/L位,表示Global/Local。当G/L位为1时是全球管理,为0时是本地管理,这时用户可以任意分配网络上的地址。

适配器有过滤功能,适配器从网络上每接收到一个MAC帧,首先用硬件检查MAC帧中的目的地址,包括:

1)单播(unicast)帧(一对一),即收到的帧的目的MAC地址与本机MAC地址完全相同;

2)广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(全1地址);

3)多播(multicast)帧(一对多),即发送往本局域网上一部分站点的帧。

MAC帧格式

1)DIX Ethernet V2标准(最常用)

类型字段用来标志上一层使用什么协议,以便把收到的MAC帧的数据上交给上一层协议,例如0x0800表示IP数据包。

实际上,在传输媒体上实际传送要比MAC帧多8个字节的前导,这是因为当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面若干位就无法接收,结果使整个的MAC帧失效。为了接收端迅速实现位同步,从MAC层向物理层发送数据时插入8个字节前导(由硬件生成),它由两个字段组成。前7个字节位前同步码(1和0交替码),它的作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端时钟同步;最后一个字节为帧开始定界符,定义为10101011,告诉接收端适配器:“MAC帧信息马上就要来了,请适配器注意接收”。

2)IEEE的802.3标准

IEEE 802.3规定MAC帧的第三个字段为“长度/类型”,当这个字段值大于0x0600时,就表示类型。这样的帧和以太网V2 MAC帧完全一致。只有当这个字段小于0x0600时才表示”长度“,即MAC帧的数据部分长度(MTU)。

IEEE 802.3标准规定凡是出现下列情况之一即视为无效MAC帧:

a) 帧长度不是整数个字节;

b) FCS帧检验序列有差错;

c) 收到的帧的MAC帧MTU长度不在46~1500字节之间。考虑到MAC帧首部和尾部长度共有18个字节,可以得出有效的MAC帧长度为64~1518字节之间。

网桥和VLAN

多路网桥就是以太网交换机,以太网交换机有多种类型,如“具有第三层特性的二层交换机”和“多层交换机”,前者具有某些三层功能,如数据报的分片和对多播通信量的管理,后者可以根据三层IP地址对分组进行过滤。

使用以太网交换机可以方便实现VLAN划分。

1988年IEEE 802.3ac标准,定义了以太网的帧格式的扩展,以便支持VLAN,即在以太网帧格式中插入4字节的VLAN标识字段,称为VLAN Tag,用来指明发送该帧的工作站属于哪一个VLAN。

VLAN标记字段的前两个字节总是设置为0x8100,称为IEEE 802.1Q标记类型;后两个字节为VLAN ID,唯一标记该以太网帧属于哪一个VLAN。

网络协议之TCP/IP协议的更多相关文章

  1. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  2. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  3. 第12章 网络基础(1)_网络分层和TCP/IP协议族

    1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须 ...

  4. 【Linux网络基础】TCP/IP 协议簇(各个常见协议介绍)

    一.应用层协议 1. FTP   协议所在层次:应用层协议 名称:FTP协议 协议端口:20,21 协议说明: FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组 ...

  5. ISO/OSI网络体系结构和TCP/IP协议模型

    1. ISO/OSI的参考模型共有7层,由低层至高层分别为:物理层.数据链路层.网络层.传输层.会话层.表示层.     应用层.各层功能分别为: (1)物理层          提供建立.维护和拆除 ...

  6. 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集

    第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成 ...

  7. 【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)

    一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不 ...

  8. 网络基础之TCP/IP协议族

    一.TCP/IP协议族 1.什么是协议? 计算机与网络设备相互通信依赖于相同的方法,比如,双方通信基于何种语言等.而把通信所依赖的这一切方法统称为规则,而我们就把这种规则称为协议. 协议中存在各种各样 ...

  9. HTTP协议与TCP/IP协议

    OSI 是7层         TCP/IP 协议是 4层. OIS 包括的层 从底到上依次为 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层 TCP/IP  ...

随机推荐

  1. 手把手教你上传文件到GitHub上(已获取ssh密钥)

    如何提交一个文件到GitHub(已经生成ssh key) 1.新建一个文件夹,当作本地仓库 2.初始化仓库 $git init 3.将想要上传的东西复制到仓库中 4.将文件提交到暂存区 $git ad ...

  2. 六、while循环

    案例1: do while 循环  很少用到. for循环和while循环用的最多.

  3. element样式调整用到的东西

    修改element 样式不能j加scoped 一般来说常常用!important,为了提高权重会用到>,有时发现/deep/其实还蛮好用,如下 .range { .el-input--mini ...

  4. python redis之连接池的原理

    python redis之连接池的原理 转载地址 什么是连接池 通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接, 一般情况下 ...

  5. JavaNIO

    Java New IO 简称 nio,在jdk1.4提供了新的api,有如下特性: 1.为所有原始类型提供缓存支持 2.字符集编解码解决方案 3.Channel:新的原始io抽象 4.支持锁和内存映射 ...

  6. 构造函数为何不能用abstract, static, final修饰

    不同于方法,构造器不能是abstract, static, final的. 1.构造器不是通过继承得到的,所以没有必要把它声明为final的. 2.同理,一个抽象的构造器将永远不会被实现,所以它也不能 ...

  7. 通过telnet自动下载cfg配置文件

    源代码如下: import telnetlib import logging import datetime import csv import time def telnetfunc(enbid, ...

  8. 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ZMwgqK 可交互视频 此视频是可 ...

  9. Python之网路编程利用multiprocessing开进程

    一.multiprocessing模块介绍 python中的多线程无法利用CPU资源,在python中大部分情况使用多进程.python中提供了非常好的多进程包multiprocessing. mul ...

  10. c语言数组那些骚事儿

    找出最大和第二大值#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { , , ...