简介

OSI 是理论上的模型,也就是一个统一的国际标准,现在的很多网络设备或者是网络协议都不同程度的精简了自己的所谓的模型,那么他们为了自己的通讯兼容都会参考这个OSI模型

TCP/IP 包括:

  TCP/IP 模型就是现在的很多厂商同意参考的一个很工业化的模型!多数厂在不做特殊设备的情况下都会按照这个模型来做,这样做最大的好处就是保证了不同设备可以使用相同的网络。也就是所谓的兼容性!

  TCP/IP 协议簇规定了TCP、UDP、ICMP、IGMP、IP、ARP、RARP(废弃)这些协议。

  TCP/IP 支持多种不同的链路层(网络接口层)协议,具体使用哪种协议取决于所使用的硬件,包括以太网、IEEE802.11、FDDI等。

注:Ethernet(以太网)协议是有线网络;IEEE 802.11协议是无线网络,IEEE 802.11提供了一个标准,wi-fi是其具体的实现。

协议说明:

ARP 和 RARP:

  有些地方把ARP协议划到网络层,是因为ARP协议属于TCP/IP协议簇。在TCP/IP模型中,它所有定义的协议是在网络层上的。按照OSI的标准,数据在传递时每层会加上自己的信息。当网络层的IP包进入链路层时,链路层通过ARP协议添加链路信息,而这不是网络层的功能,所以认为ARP是链路层的。可以这样做,在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层

  当IP报文传到链路层,如果链路层是以太网协议,要求链路层包头要有主机的MAC地址,所以会先通过ARP协议(ARP请求和应答)获得主机MAC地址,然后把它添加到链路层包头,最后整个数据包再通过网线把数据传输出去。

  ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

  RARP协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。注意,RARP协议曾经作为逆向的地址解析协议和ARP配合使用,但是现在RARP协议已经被淘汰,在DHCP(动态主机配置协议)协议中已经包含了RARP的功能

ARP应用实例:

  主机A要发数据给主机B,主机A在封装Frame(OSI的第二层用的数据格式),要封装对方的MAC,查找ARP表发现不知道B的MAC,只知道IP,它就发送一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个ARP请求在A所在的内网被广播,当其他机器接到这个包时,用目的IP和自己的IP比较,不是的话就丢弃;是的话,B接收时,发现IP和自己的一样,就应答这个请求,把自己的MAC送给A。如果B是其他子网的主机,那么路由器根据子网掩码会判断出B是其他子网,然后路由器把自己的MAC返回给A,A以后再给B发包时,目的MAC封装的就是路由器的。总之,A和B如果是同一子网,A发送的目的MAC就是B的,否则A发送的目的MAC就是路由器的。

ICMP:

  ICMP封装在 IP 数据报内部,如下:

IP 首部 ICMP报文

  ICMP报文类型可以分为两类,一类是错误信息,这一类信息可用来诊断网络故障。我们知道IP协议的工作方式是”best effort”。如果IP包没有被传输到目的地,或者IP包发生错误,IP协议本身不会做进一步的努力。但是上游发送IP包的主机和接力的路由器并不知道下游发生了错误和故障,它们可能继续发送IP包。通过ICMP包,下游的的路由器和主机可以将错误信息汇报给上游,从而让上游的路由器和主机进行调整,需要主要的是,ICMP只提供特定类型的错误汇报,它不能帮助IP协议成为”可靠(reliable)”的协议。另一类信息是咨询性质的,比如某台计算机询问路径上的每个路由器都是谁,然后各个路由器同样用ICMP包回答。

  备注:ICMP基于IP协议,也就是说,一个ICMP包需要封装在IP包中,然后在互联网传送。ICMP是IP套装的必须部分,也就是说,任何一个支持IP协议的计算机,都要实现ICMP。

常见的ICMP报文类型:

1、回显请求和应答,ping就是用了这类型ICMP包

2、源站被抑制

3、目的不可达

4、超时,traceroute就是用了这类型ICMP包

5、重新定向

6、参数问题

作用:

ICMP的全称是 Internet Control Message Protocol 。ICMP就是一个“错误侦测与回报机制”,其目的就是用来检测网络通信故障和实现链路追踪,最典型的应用就是PING和tracerooute。

  PING:

    通过发送回送请求报文和回送回答报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟情况。

  traceroute:

    通过发送探测报文来获取链路地址信息。第一个探测报文TTL为1,到达第一个路由器时,TTL减1为0所以丢掉这个探测包,同时向源主机发回ICMP时间超过报文,这时源主机就获得了第一个路由器的IP地址;接着源主机发送第二个探测报文,TTL增1为2,到达第一个路由器TTL减1为1并转发探测包到第二个路由器,这时TTL减1为0,丢掉这个探测包并向源主机发回ICMP时间超过报文,源主机就获得了第二个路由器的IP地址;以此类推,直到探测报文到达traceroute的目的地,这时源主机就获得了到目的地的每一跳路由的IP地址。

总结:

总结

  ICMP协议是IP协议的排错助手,它可以帮助人们及时发现IP通信中出现的故障。基于ICMP的ping和traceroute也构成了重要的网络诊断工具。然而需要注意的是,尽管ICMP的设计是出于好的意图,但ICMP却经常被黑客借用进行网络攻击,比如利用伪造的IP包引发大量的ICMP回复,并将这些ICMP包导向受害主机,从而形成DoS攻击。而redirect类型的ICMP包可以引起某个主机更改自己的routing table,所以也被用做攻击工具。许多站点选择忽视某些类型的ICMP包来提供自身的安全性.

IGMP:

IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

IP:

  所有的TCP、UDP、ICMP 和 IGMP 数据都以 IP 数据报格式传输

  IP 层既可以配置成路由器的功能,也可以配置成主机的功能。IP 层在内存中有一个路由表。当 IP 层收到数据报,IP 层首先检查目的 IP 地址是否为本机的 IP 地址之一或 广播地址,如果是,数据报就被送到有 IP 首部协议字段所指定的协议模块进行处理;如果不是这些地址,如果 IP 层被设置为路由器的功能,那么对数据报进行转发,否则数据报被丢弃。

DNS:

  把域名转换为唯一的 IP 地址,DNS同时占用UDP和TCP端口53

FTP:

  FTP 客户端和 FTP 服务器之前可以进行文件传输

Telnet:

  提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。

OSI 七层模型和 TCP/IP 四层模型 及 相关网络协议的更多相关文章

  1. 大白话聊OSI七层模型和TCP/IP四层模型

    前言 今天和大家聊的是一个比较基础的问题,OSI七层模型和TCP/IP四层模型. 小伙伴们可能有疑问,这个东西还用写文章吗,太基础了吧,网上文章多的是,随便一搜索就能找到. 确实是这样,网上资料确实很 ...

  2. 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)

    以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型    下四层是为数据传输服务的,物理层是真正的传输数 ...

  3. 计算机网络漫谈之OSI七层模型和TCP/IP四层模型

    在 什么是网络? 中,你已经知道计算机网络是物理连接的"局域网"和工作于这个局域网上的"网络协议",并且我们的重心是网络协议.有关网络协议,按照目前的分层方式主 ...

  4. OSI七层模型和tcp/ip四层模型对比

    OSI 与TCP/IP 模型对比 OSI 协议层名称 TCP/IP 协议层名称 封装的单元 功能描述 TCP/IP协议 应用层(Application) 应用层(Application) 数据 应用程 ...

  5. [TCP/IP]OSI七层模型和TCP/IP四层模型

    OSI參考模型 在過去的電腦網路上,由於資料通訊系統涉及複雜的軟硬體,可是又沒有統一的標準,導致通訊軟體不僅龐大複雜,而且不易測式.修改或分享.為此,ISO(國際標準組織)發展出一套OSI參考模型(O ...

  6. OSI七层模型和TCP/IP四层模型

    1)网络层负责点到点的传输(这里的“点”指主机或路由器),而传输层负责端到端的传输(这里的“端”指应用进程) 2)ARP协议介于数据链路层和网络层之间(IPv4专有,IPv6的地址映射功能在ICMPv ...

  7. 简述osi七层模型和TCP/IP五层模型

    OSI七层模型 OSI七层模型的划分 应用层(Application).表示层(presentation).会话层(session).传输层(Transport).网络层(Network).数据链路层 ...

  8. OSI七层模型和TCP/IP五层模型详解

    OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范.OSI模型有7层结构,每层都可以有几个子层. OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 ...

  9. OSI七层网络模型与TCP/IP四层模型介绍

    目录 OSI七层网络模型与TCP/IP四层模型介绍 1.OSI七层网络模型介绍 2.TCP/IP四层网络模型介绍 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 5.交换机工作在OSI的哪 ...

随机推荐

  1. python2.7入门---循环语句(for&嵌套循环)

        咱们直接先来看for循环.Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串.然后再来看一下它的语法结构: for iterating_var in sequence: ...

  2. 形象的理解Strong和Weak

    Strong Weak

  3. hihoCoder 1175:拓扑排序二

    题目链接: http://hihocoder.com/problemset/problem/1175 题目难度:一星级(简单题) 今天闲来无事,决定刷一道水题.结果发现这道水题居然把我卡了将近一个钟头 ...

  4. cpp语言程序设计教程第七章的一道编程题

    题目如下 按下列要求实现一个有关学生成绩的操作. 该类名为Student. (1)每个学生的信息包含有姓名(字符数组)和成绩(int型). (2)共有5个学生,用对象数组表示. (3)计算出5个学生中 ...

  5. 目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)

    首先贴上代码原作者的github:https://github.com/chenyuntc/simple-faster-rcnn-pytorch(非代码作者,博文只解释代码) 今天看完了simple- ...

  6. Hibernate 查询,返回结果设置到DTO

    1:原生sql的查询,返回结果设置到DTO: Query query = sessionFactoryRtData.getCurrentSession().createSQLQuery(hql.toS ...

  7. FetchType.LAZY 时属性加上@JsonIgnore,避免返回时报错:Could not write JSON: failed to lazily initialize a collection of role

    [示例] @OneToMany(fetch=FetchType.LAZY) @JsonIgnore @Fetch(FetchMode.SELECT) @Cascade(value={CascadeTy ...

  8. 预研报告——MyBatis持久层的demo

    一.预研任务介绍和预研目标 任务介绍: 与 Hibernate 相比, MyBatis 是一个半自动化的持久层框架,以轻量级.效率高.原生代而好评如潮.虽然有在分享会上大致讲解,但是还是重新梳理成文字 ...

  9. flask - 1

    from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, Worl ...

  10. Linux的常用目录学习笔记

    首先,先查看一下Linuxi的一级目录结构: ls: /:表示根目录,文件系统的入口,最高一级目录. bin和sbin:命令保存目录,bin是普通用户能,sbin是root用户用的:/bin存放着系统 ...