zoukankan      html  css  js  c++  java
  • osi七层协议

    OSI七层协议

    实现远程通信具备:

    1. 物理连接介质——> 网卡
    2. 互联网协议:计算机之间沟通的介质“互联网协议”

    互联网的本质就是一系列的网络协议,这个协议就是osi。(OSI是Open System Interconnection的缩写)。按照分工的不同,人为划分为七层,

    从下往上分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

    物理层

    物理层:物理传输,在不同地方的电脑想要通信必须,电脑要插一根网线、路由器,才可以实现。也就是说要有物理介质连接,

    中间的物理链接可以是光缆、电缆、双绞线、无线电波,基于电信号发送二进制数据0100010101。

    但是一堆二进制数据没有分组,不知道什么意思,这就要交给数据链路层处理。

    数据链路层

    数据链路层的“以太网协议”, 专门用于处理基于电信号发送二进制的数据。

    以太网协议:

    1. 规定好电信号数据的分组方式
    2. 每一台连接网线的电脑都必须要有一块网卡,发送端的和接收端的地址就是网卡的地址,即mac地址

    mac地址

    网卡由不同厂商生产,每块网卡出厂都会被烧录上实际上唯一的mac地址,由48位二进制组成,通常用12位16进制表示,前6位是厂商编号,后6位是流水线号

    有了mac地址计算机就可以通信了。假设一个教室就是一个局域网,教室里有几台计算机,计算机的通信就使用广播的方式,靠吼。

    比如说我想找老张要片,我得知道自己的mac地址和老张的mac地址,这两个地址做数据包的头部,再加上数据片就构成了一个数据包。

    这样发送出去,然后就通过广播的方式,在教室的所有人都听到了,都会拆这个数据包,看是找谁的,只要不是找自己的就丢掉,其实就是再看想找那个mac地址,找的是老张,这样老张就会收到消息并把片发给我。这就是局域网通信。

    但我有事找老王,他在隔壁教室,这样他就听不到我广播了,这就得交给网络层来处理了。

    网络层

    IP协议

    有两种版本,一个是IPv4,另一个是IPv6

    IPv4是由32位二进制组成,32位分成4组,8位一组换算成10进制显示,采用点分制。范围从0.0.0.0255.255.255.255

    通过IP协议可以跨局域网通信。我想找隔壁教室的老王,我在自己教师广播,他肯定是听不到的。那么我就得找教室负责人,把东西交给负责人,让他去找隔壁教室负责人,说我想找你教室的老王,然后把东西交给负责人,让负责人带话给老王。负责人就是网关。

    Mac地址是用来标识你这个教室的某个位置,IP地址是用来标识你在哪个教室(哪个局域网)。你要跨网络发包你是不是要知道对方的IP地址,比如你要访问百度,你肯定得知道百度服务器的IP地址。计算机在发包前,会判断你在哪个教室,对方在哪个教室,如果在一个教室,基于mac地址的广播发包就OK了;如果不在一个教室,即跨网络发包,那么就会把你的包交给教室负责人(网关)来转发。Mac地址及IP地址唯一标识了你在互联网中的位置。

    ARP协议

    IP地址与mac地址的映射关系

    传输层

    传输层建立端口到端口的通信

    端口标识主机上的应用程序,是应用程序与网卡关联的编号

    端口范围:0-65535,前1024个端口为系统占用

    有了IP地址+mac地址+端口,我们就能确定世界上唯一的计算机的应用程序

    TCP协议

    • 可靠传输,提供的是流式协议为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行管理。 而可靠的传输服务是指, 能够把数据准确可靠地传给对方。 即TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。所以,TCP连接相当于两根管道(一个用于服务器到客户端,一个用于客户端到服务器),管道里面数据传输是通过字节码传输,传输是有序的,每个字节都是一个一个来传输。

    UDP协议

    无连接协议,不可靠传输

    应用层

    用户使用的程序都是应用程序,均工作于应用层,规定了应用程序的数据格式

  • 相关阅读:
    Java 集合类
    Java 中的四种引用及垃圾回收策略
    Java 类的加载过程(阿里面试题)
    JMeter进行一次简单的压力测试
    python使用 HTMLTestRunner.py生成测试报告
    python读取配置文件
    python的IDE工具-- Pycharm
    selenium webdriver+python基本操作
    SQL开发测试使用基础
    python学习笔记
  • 原文地址:https://www.cnblogs.com/setcreed/p/11710239.html
Copyright © 2011-2022 走看看