当前位置:   article > 正文

网络是怎样连接的(学习笔记)

网络是怎样连接的

网络是怎样连接的

一、浏览器生成消息

1.生成HTTP请求信息

  • 浏览器是一个具备多种客户端功能的综合性软件,用URL来判断使用其中的哪些功能。
    访问WEB服务器用http:
    访问FTP用ftp:

  • 解析URL:http:(协议)//(//后面的字符表示服务器的名称)+web服务器名+/+目录名+/+·······+文件名(服务器名后边的东西都可以省略)

    • 以"/"结尾代表后面的文件被省略了,事先在服务器上设置好文件名省略时的默认文件名
      "/"表示根目录
  • 使用HTTP协议来访问服务器:

    • 1)客户端向服务器发送请求消息(方法+URI)
    • 2)服务器做完相应的操作之后,发回响应消息(状态码(表示执行结果的状态)+头字段和网页数据)
    • 3)客户端收到后,在屏幕上显示数据
  • 状态码(第一位数字的含义,二三位表示具体的情况)

    • 1XX

      • 告知请求的的处理进度和情况
    • 2XX

      • 成功
    • 3XX

      • 表示需要进一步操作
    • 4XX

      • 客户端错误
    • 5XX

      • 服务器错误
  • 一条请求消息只能写一个URI,如果需要获取多个文件,必须对每个文件单独发送一条请求

2.向DNS服务器查询web服务器的IP地址

  • IP地址主机号:全0表示整个子网,全1表示向子网上所有设备发送包,就是广播

  • TCP/IP通过IP地址来确定通信对象

  • 委托操作系统发消息时,要先查好对方的IP地址

  • 发送者发送消息先经过子网中的集线器,转发到距离发送者最近的路由器上

    • 这个路由器根据消息的目的地判断下一个路由器的地址,依次转发直到到达目的地
  • 域名不仅长,而且长度不固定,处理长度不固定的数据比处理长度的固定的数据要复杂

    • 所以操作系统使用IP地址,而人们为了方便和好记忆采用域名的记法
  • 通过DNS查询IP地址操作称为域名解析,这是一段包含在操作系统Socket库中的一段程序,

    • Socket库是用来调用网络功能的程序组件集合
  • 控制流程准移:调用其他程序,使得原本的程序进入暂停状态,被调用的程序开始运行

3.全世界DNS服务器的大接力

  • 客户端发送查询消息

    • 1)域名
    • 2)Class
    • 3)记录类型
  • DNS

    • DNS的工作

      • DNS会从域名与IP地址的对照表中查找相应的记录,并返回IP地址

        • 在域名中,越靠右的位置表示层级越高
        • 一个域的消息是作为一个整体存放在DNS服务器中的,不能将一个域拆开存放在多台DNS服务器中
    • 根域DNS服务器:在运营上使用多台服务器对应一个IP地址(只有13个),表示在域名最后有一个句点(但经常省略不写)

      • 根域的DNS服务器信息保存在互联网中所有的DNS服务器中,所以一个客户找到一个DNS服务器就可以访问根域DNS服务器,然后自顶向下访问某台目标DNS服务器
    • DNS服务器中有缓存功能,会自动记住之前查询过的域名

4.委托协议栈发送消息

  • 向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用Socket库中的程序组件

  • 收发数据:把数据通道想象成一条管道从数据的一端送入管道,在管道另一端被取出

    • 数据可以从任意一端进入管道,数据流通是双向的(并不是真的有管道,而是想象)
  • 在收发数据之前,需要先建立起来这条管道,管道出入口被称为套接字

    • 服务器先创建套接字,等待客户端创建套接字,然后连接到服务器上
    • 虽然连接时是由客户端发起的,但在断开时可以由任意一方断开
  • 收发数据(操作系统协议栈来进行)

    • 1)创建套接字

      • 创建套接字完成后,协议栈返回一个描述符,应用程序将收到的描述符放在内存中
    • 2)连接到服务器的套接字

      • 调用Socket库中的connect,传递3个参数

        • 描述符

          • 应用程序通过“描述符”这一类似号码牌的东西来识别套接字
        • 服务器IP地址

        • 端口号

          • 只要指定了事先规定好的端口号,就可以连接到相应的服务器程序的套接字
    • 3)收发数据

      • 1)调用write这个程序组件时,指定描述符和发送数据,协议栈将数据发送给服务器

      • 2)服务器执行接收操作,解析收到的数据内容并执行响应的操作,向客户端返回响应信息

      • 3)服务器返回响应信息,调用read组件将接受到的响应信息存放到接收缓存区中

        • 缓存区:位于应用程序内部的内存空间,所以放到了缓冲区就相当于转交给了应用程序
    • 4)断开管道删除套接字

      • Web使用的HTTP协议规定,web服务器发送完响应信息之后,调用close,主动执行断开操作

        • 根据应用组件不同,客户端和服务器哪一方先执行close都有可能

二、用电信号传输TCP/IP数据

1.创建套接字

  • 协议栈的内部(采用分层结构,上层会向下层分配工作)(右侧是从上到下的顺序)

    • 应用程序

      • 1)网络应用程序(浏览器、邮件客户端、WEB服务器等等)
      • 2)Socket库,其中包括解析器,用来向DNS服务器发出查询
    • 操作系统(协议栈)

      • 3)用TCP和UDP协议收发数据

        • 浏览器邮件等一般应用程序收发数据用TCP
        • DNS查询等收发较短的控制数据一般用UDP
      • 4)IP协议控制网络包收发操作(其中包括ICMP协议和ARP协议)

        • ICMP用于告知网络包传送过程中产生的错误以及各种控制信息
        • ARP协议用来根据IP地址查询响应的以太网MAC地址
    • 驱动程序

      • 控制网卡
    • 硬件

      • 完成实际的收发操作
  • 套接字的实体:存放控制信息的内存空间

  • 协议栈根据套接字中记录的控制信息来工作

  • 浏览器调用socket程序组件

    • 1)应用程序调用socket申请创建套接字

    • 2)协议栈分配一个存放套接字的内存空间

    • 3)写入初试状态的控制信息

    • 4)将表示这个

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/712132
推荐阅读
相关标签
  

闽ICP备14008679号