zoukankan      html  css  js  c++  java
  • 002---tcp/ip五层详解

    tcp/ip 五层模型讲解

    越靠底层就越接近硬件,越靠上层越接近用户。先从底层看起,理解整个互联网通信的原理。

    物理层(传输电信号)

    孤立的计算机想要一起玩。就必须用硬件在计算机之间完成组网。以硬件做为介质来传输。
    物理层:

    • 光缆
    • 电缆
    • 双绞线

    功能:主要是发生高低电压(电信号)。高电压对应1,低电压对于0。

    数据链路层(ARP协议)

    物理层传来的单纯的电信号0和1没任何意义。必须规定电信号多少位一组,每组代表什么意思。
    功能:定义了电信号分组方式。

    规定

    • 一组电信号构成一个数据包,叫做帧。
    • 每一组数据帧,包含head 和 数据data 两部分

    head(固定18个字节)

    • 发送者/原地址:6个字节
    • 接收者/目标地址:6个字节
    • 数据类型:6个字节

    data(46-1500字节)

    • 数据包的具体内容

    mac 地址

    • head包含的目标地址和原地址就是网卡的地址,即mac地址
    • 每块网卡出厂时都被烧制一个世界上唯一的mac地址,长度为48位二进制,通常由12位16进制数表示
    • 前6位是厂商编号、后六位是流水线编号

    广播

    • 有了mac地址两台计算机就能通信了。通过ARP协议获取另外一台计算机的mac地址,以广播的方式进行通信,即靠吼。
    • 收到数据包之后拆包,在head部分发现对方发来的目标地址不是自己的就丢弃,是自己的就响应。

    ARP协议

    • 功能:广播的方式发生数据包,获取目标主机的mac地址。
    • 协议工作方式:每台主机ip都是已知的

    网络层(IP协议)

    之前有了Ethernet、mac地址、广播的方式。世界上的计算机就能彼此通信,问题是世界范围内的互联网是由一个个小小的隔离的局域网组成,那么如果所有的通信都采用以太网的广播方式,那么一台机器发生的包全世界都会收到,这不仅仅是效率的问题,这更会是一场灾难。
    所以,网络层就出现了。必须有一种方法来区分哪些计算机属于同一个域,哪些不是。如果是就采用广播的方式,如果不是,就采用路由的方式。
    功能:引入一套新的地址来区分不同的广播域/子网,这套地址即网络地址。

    IP协议

    • 它定义的地址叫做ip地址,广泛采用iPv4,它规定用32位二进制表示
    • 范围:0.0.0.0 - 255.255.255.255
    • 一个ip地址通常写成4段十进制数:192.168.0.1

    组成

    • 网络部分:标识子网
    • 主机部分:标识主机
    • 注意:单纯的ip地址段只是标识了ip地址的种类,根据网络部分或主机部分并不能判断二者是否处于同一子网。

    子网掩码

    所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

    知道子网掩码就可以判断,任意两个ip是否处于同一子网络。将两个ip地址与子网掩码分别进行and运算(两个数位加1,运算结果都是1则为1,,否则为0),最后比较结果即可。

    ip数据包

    • head
    • data
    • 直接放在以太网包的data部分。

    传输层(TCP和UDP协议)

    网络层的IP协议帮我们区分子网,数据链路层的ARP协议帮我们区分mac地址找到主机。然后大家用的却是应用程序,比如说腾讯QQ、爱奇艺...
    怎么知道找到主机的应用程序呢,答案就是端口。

    功能:建立端口与端口之间的通信

    端口范围:0 - 65535 ,0 - 1023 为系统占用端口

    应用层(http协议、ftp协议、https协议)

    用户使用的都是应用程序,均工作与应用层,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的形式。

    功能:规定应用程序的数据格式

  • 相关阅读:
    怎么认Destsoon标签条件
    PHP将图片转base64格式函数
    修改Discuz!X系列开启防CC攻击,不影响搜索引擎收录
    discuz x3.2简化的搜索框代码
    让Discuz! X3.2 SEO标题里的“-”支持空格
    javascript的常用操作(二)
    Spring MVC中注解的简介
    Spring MVC + Thymeleaf
    Maven建立spring-web项目
    Spring @Autowired使用介绍
  • 原文地址:https://www.cnblogs.com/xjmlove/p/10342153.html
Copyright © 2011-2022 走看看