zoukankan      html  css  js  c++  java
  • 01 iso的七层协议、TCP协议的三握手,四挥手

    单机架构

    • cs架构:客户端--->服务端
    • bs架构:客户端---->浏览器---->服务端

    网络通信原理

    ​ 2.1互联网的本质就是一系列的网络协议

    ​ 一台硬设有了操作系统,然后装上软件就可以正常使用了,然而你也只能自己使用像这样,每个人都拥有一台自己的机器,然而彼孤立。

    ​ 结论:英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为'互联网协议'(internet Protocol Suite)。

    ​ 互联网协议的功能:定义计算机如何连接internet,以及接入internet的计算机通信的标准。

    ​ 边缘部分:客户端或服务端

    ​ 核心部分:路由器、基站

    ​ 2.2osi七层协议

    ​ 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

    img

    ​ 每层运行常见的物理设备

    img

    ​ OSI七层协议数据传输的封包与解包过程

    img

    tcp/ip五层模型

    ​ 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个互联网通信的原理。

    ​ 首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解,每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。

    1、物理层

    • 光缆/网线:传输信号,连接两台计算机,如果有一根网线能够从中国连接到美国,那么只要一根网线就够了

    ​ 物理层由来:两个孤立的计算机之间想要一起玩耍,就必须接入internet,言外之意就是两个计算机之间必须完成组网

    ​ 物理层的功能:主要是基于电器特性发送高低电压信号,高电压对应的数字1,低电压对应的数字为0

    2、数据链路层

    ​ 让同一局域网下的计算机连接在一起

    • 数据链路层的功能:让0和1变得有意义,每几位一组,

    ​ 以太网协议:

    ​ 规定物理层中传输的0和1的格式

    head:

    ​ 数据类型

    data:内容

    • 发件人的地址就是mac地址,计算机上网卡的地址,这个地址不变,并且唯一,每一台电脑有自己固定的mac地址

    ​ mac地址:

    ​ head中包含的源和目标地址由来:ethernet规定接入internet的设备必须都具备网卡,发送端和接收端的地址便是网卡的地址,即mac地址

    ​ mac地址:每块网卡出厂时都被烧制世界上唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线编号)

    • 广播:你一定知道自己的mac地址,还有收件人的mac地址,通过某一台设备(交换机),但是交换机不知道mac地址对应的计算机是那一台,交换机就会以广播的形式发给所有的计算机,收件人的计算机收到了就会解析这条命令,就拿到内容了.之后交换机就会记录两个mac地址。

      以上基于局域网

    img

    3、网络层

    ​ 让不同局域网下面的计算机连接在一起

    ​ 叫做IP地址,只知道mac地址,无法连接其他局域网内的计算机,因为mac地址只被交换机识别,然后不同局域网的交换机不一样,所以现在定义一个新的地址表明是哪个局域网,通过路由器

    ​ 在数据链路层的基础上再包一层IP头

    ​ 已经知道了淘宝的ip和mac地址,你会把自己的mac地址和ip地址一起发送出去,路由会接收淘宝的ip地址,路由发送淘宝的ip地址和mac地址,自带mac地址(路由器的)和ip地址(路由器的ip地址)

    ​ mac地址(局域网)+ip地址(互联网)就能找到世界上独一无二的电脑

    4、传输层

    ​ 组织网络带来的数据,

    ​ 端口号,找到一个固定的应用程序,一个端口号对应一个应用程序

    ​ mac地址 + ip + port(端口号)——>独一无二的应用程序

    ​ 数据0和1发给应用程序,TCP和UDP协议

    5、应用程序

    ​ 0和1转换成具体的功能

    6、抽象层

    ​ 客户端和服务端的应用程序想通信,两者传输的数据必须是一样的,

    ​ socket抽象层就是对全世界独一无二的计算机上的应用程序,既可以是客户端,也可以是服务端

    ARP协议

    arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议

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

    协议工作方式:每台主机ip都是已知的

    例如:主机172.16.10.10/24访问172.16.10.11/24

    一:首先通过ip地址和子网掩码区分出自己所处的子网

    场景 数据包地址
    同一子网 目标主机mac,目标主机ip
    不同子网 网关mac,目标主机ip

    二:分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)

    源mac 目标mac 源ip 目标ip 数据部分
    发送端主机 发送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 数据

    三:这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac

    TCP协议三次握手、四次挥手

    ​ TCP:

    ​ 数据从服务端--->客户端的协议

    ​ 三次握手建立连接:

    ​ 如果你要去服务端去下载视频,客户端和服务端之间必须连接,连接就是三次握手:

    ​ 在连接之前,客户端和服务端都是处于关闭状态的

    1. 客户端会像服务端发起一个请求,如下载视频,会有一个syn报头
    2. 服务端会接收到客户端的请求,然后会响应客户端,并且把syn报头改装好后又返回客户端,会有ack的报头
    3. 客户端开始进入连接状态,再发一条请求,请求带上ACK给服务端,让服务端也进入连接状态

    ​ 四次挥手关闭连接:

    1. 客户端就会发送请求带上FIN报头给服务端说我够了,要断开连接
    2. 服务端接收到客户端的请求后,返回一个带有ACK报头的请求说确认了,1、FIN报头并没有返回,2、但是服务端此时可能还有数据传输
    3. 服务端数据传输结束之后,服务端又会发送一次报头FIN的请求,告诉客户端,我发完了,结束吧.
    4. 所以必须得有第四次确认,客户端向服务端进行一次确认,我收到了,否则第二次传入的数据有丢失的风险.

  • 相关阅读:
    【[USACO08FEB]酒店Hotel】
    【[USACO15JAN]草鉴定Grass Cownoisseur】
    【[USACO09DEC]牛收费路径Cow Toll Paths】
    【[HAOI2009]逆序对数列】
    【Hankson 的趣味题】
    【开车旅行】
    【[ZJOI2006]物流运输】
    【[HNOI2005]狡猾的商人】
    【愤怒的小鸟】
    【[HNOI2015]菜肴制作】
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14279054.html
Copyright © 2011-2022 走看看