• 网络协议


    网络基础之网络协议

    一、什么是网络协议及为何要有互联网协议

          网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合。好比世界各地的人为了进行沟通交流,将英语作为一个统一的语言,相对的,计算机与计算机之间需要通信,就需要一系列统一的标准,毕竟每个厂商制造的计算机都互有不同。单个计算机系统是封闭的,只能单独使用,不能与其他用户进行数据间的交互。为了在各个计算机中进行数据互通,就衍生除了互联网协议,以帮助人们将多个数据终端进行连接,共享数据。互联网协议定义计算机如何接入Internet,以及接入internet的计算机通信的标准。

    二、Tcp/ip五层模型

      通常用户感知的是最上面一层应用层,自上而下依赖下一层,每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。

    1.物理层

    模型中最低一层,主要为数据端设备提供传送数据通路、传输数据,物理层的媒体包括平衡电缆、光纤、无线电波、双绞线等。

    2.数据链路层

    由来:单纯的01电信号没有意义,必须规定电信号多少位一组,每组什么意思。

    功能:定义了单个链路上如何传输数据,电信号的分组方式。

    以太网协议:统一的标准,以太网协议ethernet,一组电信号构成一个数据包为“帧”,每一数据帧分为报头head和数据date两部分。

    MAC地址:ethernet规定接入Internet的设备需要具备网卡,发送端和接收端地址即网卡地址,也是MAC地址,具有唯一性。

    广播:有了mac地址,通过ethernet采用的最原始的广播方式,两台主机便可以通信。

    3.网络层

    有了ethernet、MAC地址、广播的发送,计算机就可以彼此通信。然而世界范围的互联网是彼此隔离的小局域网组成的,因此就需要区分计算机属于哪一广播域/子网。

    IP协议:规定网络地址的协议,它所定义的地址称为IP地址,广泛应用IPV4,规定网络由32位2进制表示。IP地址分为标识子网和标识主机。IP协议的作用主要有2个,一个是为每台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

    子网掩码:表示子网络特征的一个参数,形式上等同于IP地址。

    IP数据包:分为Head和data部分,无需为IP包定义单独栏位,直接放入以太网的data部分

    ARP协议:广播的方式发送数据包,获取目标主机的mac地址。

    4.传输层

       由来:在数据准确找到主机后,还不能精确定位到多个应用程序中的哪一个,所以如何标识这台主机上的应用程序,这就需要传输层来进行工作。网络层只是根据网络地址将数据包传送到目的节点,而传输层负责将数据可靠地传送到相应的端口。

       功能:建立端口到端口的数据传输。

    5.应用层

    由来:互联网是开发的,开发的应用程序多种多样,所以必须规定好数据的组织形式。

    功能:规定应用程序的数据格式。各种各样的程序比如Email、www、FTP,通过不同协议规定这些数据的格式,这些应用程序协议就构成了应用层。

    三、用户上网流程

    1. 获取本机信息(IP地址、子网掩码、网关IP地址、DNS地址)
    2. 打开浏览器,输入需要访问的地址。
    3. DNS协议,解析网址所对应的IP地址。
    4. HTTP,客户端和服务器请求和应答的标准,客户端发起一个到服务器上指定端口的HTTP请求。
    5. TCP协议,需要设置端口,传输层通信协议,把数据流分割成适当长度的报文段,随后传送给IP层,由它传送给接收端的TCP
    6. IP协议,TCP将数据包嵌入IP数据包,IP数据包设置双方的IP地址,发送方是本机的IP,接收方是需要访问的网址的解析的IP地址。
    7. 以太网协议,IP数据包嵌入以太网数据包,以太网数据包设置双方MAC地址,发送方为本机MAC地址,接收方为通过ARP协议得到的对应网关的MAC地址。
    8. 服务器端响应。经过多个网关转发,访问服务器收到了四个以太网数据包,根据IP标头的序号,将数据包拼接,取出完整的TCP数据包,读取请求,接着做出响应,再用TCP协议发回来。本机收到响应后,便可以显示网页,这就完成了一次通信。

  • 相关阅读:
    请实现一个js脚本,要求做到将数字转化为千分位表示如:1234567转化为1,234,567
    Linux mlocate安装
    Linux CentOS7网络简单配置
    Linux 常见命令 文件搜索命令
    Linux 常见命令 权限管理命令
    Linux 常见命令 链接命令
    Linux 常见命令 文件处理指令
    List与Set的contains方法效率问题
    集合介绍
    Arrays.asList()
  • 原文地址:https://www.cnblogs.com/mitsui/p/6544603.html
Copyright © 2020-2023  润新知