网络协议之TCP/IP协议
沙漏计时器型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协议的更多相关文章
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 第12章 网络基础(1)_网络分层和TCP/IP协议族
1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须 ...
- 【Linux网络基础】TCP/IP 协议簇(各个常见协议介绍)
一.应用层协议 1. FTP 协议所在层次:应用层协议 名称:FTP协议 协议端口:20,21 协议说明: FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组 ...
- ISO/OSI网络体系结构和TCP/IP协议模型
1. ISO/OSI的参考模型共有7层,由低层至高层分别为:物理层.数据链路层.网络层.传输层.会话层.表示层. 应用层.各层功能分别为: (1)物理层 提供建立.维护和拆除 ...
- 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集
第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成 ...
- 【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)
一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不 ...
- 网络基础之TCP/IP协议族
一.TCP/IP协议族 1.什么是协议? 计算机与网络设备相互通信依赖于相同的方法,比如,双方通信基于何种语言等.而把通信所依赖的这一切方法统称为规则,而我们就把这种规则称为协议. 协议中存在各种各样 ...
- HTTP协议与TCP/IP协议
OSI 是7层 TCP/IP 协议是 4层. OIS 包括的层 从底到上依次为 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层 TCP/IP ...
随机推荐
- KNN-综合应用
本文代码均来自<机器学习实战> 这里讲了两个例子,datingclass 和 figureclass,用到的都是KNN,要调用这两个例子的话就在代码末尾加datingClassTest() ...
- SQL 基础语句整理
SQL教程 SELECT 语句 SELECT * FROM 表名称 DISTINCT 语句 SELECT DISTINCT 列名称 FROM 表名称 SELECT LastName,FirstName ...
- mybatis一对一关联关系映射
mybatis一对一关联关系映射 在关联关系中,有一对一,一对多,多对多三种关联关系. 一对一关系:在操作上,任意一方引入对方的主键作为外键. 一对多关系:在"多"的一方添加&qu ...
- Delphi 常用系统函数与过程
- Delphi 常量
- error: (-215) !empty() in function detectMultiScale
tips: pip install opencv-python or https://www.lfd.uci.edu/~gohlke/pythonlibs/ 原因确实是找不到 opencv 的 xml ...
- [转载]一个支持Verilog的Vim插件——AutoDef
原文地址:一个支持Verilog的Vim插件--AutoDef作者:hover 支持一下四种类型的变量声明: 1)时序always块中的寄存器变量reg 2)组合always块中的组合reg变量reg ...
- mysql orderby 问题
开发写的sql select * from aaa where course_id=xx order by a,b 当a,b条件都一致时,默认应该以id排序,当数据条数大于1x条(17)时,结果变为 ...
- java http httpclient
HttpClient post get 洗衣店 微信扫码支付
- Jsoup抓取网页数据完成一个简易的Android新闻APP
前言:作为一个篮球迷,每天必刷NBA新闻.用了那么多新闻APP,就想自己能不能也做个简易的新闻APP.于是便使用Jsoup抓取了虎扑NBA新闻的数据,完成了一个简易的新闻APP.虽然没什么技术含量,但 ...