zoukankan      html  css  js  c++  java
  • 1、套按字及http基础知识之一

    MAC地址:设备到设备之间通信时专用(从源主机到目标主机可能经由N台路由设备)4

    IP地址:标记主机到主机之间通信时专用

    TCP/UDP :提供进程地址 通过port number来标记

      进程地址:用TCP,UDP协议的端口标识,端口(16bits)

      TCP :传输控制协议,面向连接的协议:通信前需要建立虚拟链路,结束后拆除链路

        0-65535

      UDP:User Datagram Protocol 无连接的协议  (QQ即时通信类)

        0-65535

    dns :主机名称解析时使用UDP,区域传输时用到TCP

    端口分配原则:

      IANA:互联网地址名称分配机构

        TCP/UDP都遵循此法则

      0-1023:众所周知,永久的分配给固定的应用使用,特权端口 22/tcp(ssh),80/tcp(http),443/tcp(https)  
    
      1024-41951:亦为注册端口,但要求并不是特别严格,分配给程序注册为某应用使用,11211/tcp,11211/udp(memcached) ,3306/tcp(mysql)
    
      41952~    :客户端程序随机使用的端口;动态端口或私有端口;可供本地临时分配
    
             其范围的定义:/proc/sys/net/ipv4/ip_local_port_range

    二、socket套接字

    裸套接字:不调用传输层的tcp,udp协议封装报文

    wKiom1nFsX3wURn5AAAWhWbPFq0101.png

    特定功能:由用户空间的进程完成

    通用功能:由内核完成,用户空间的进程需要使用通用的功能时,需要向内核空间发起syscall

    socket :IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信;数据交换:Socket API

        内核由syscall提供,用户空间中的进程需要与跨网络的主机通信时,需要基于socket编程方式

    socket类型:tcp、udp、raw(裸套接字)

      SOCK_STREAMtcp套接字(无:数据段的标识)

      SOCK_DGRAMudp套接字(有:数据段的标识)

      SOCK_RAM裸套接字(非tcp/udp端口)

     

    IPC :进程间通信

    wKiom1nEkgTjBAm3AAAX_uoRj4o417.png

    socket domain

    至少存在两种socket类型(SOCK_STREAM、SOCK_DGRAM)
      流:可靠的传输、面向连接、无边界; (通信信道建立后,不用考虑一个报文从哪开始到那结束,直接扔)
      数据报:不可靠地传递、有边界、无连接 (以寄信为例,信封就是边界)   AF_INET IPv4 Address Family ipv4地址家族   AF_INET6 IPv6 Address Family ipv6地址家族      AF_UNIX   UNIX Address Family 同一主机上不同进程之间通信时使用(基于unix socket通信
    -----不会到通信子网)

    套接字相关的系统调用

    wKiom1nElBuS1eYzAABGPtQRsoI520.png

    Ipv4

      分类:
    
        A:1-127
        B:128-191
        C: 192-223
        D: 组播 224-239
        E:240-254
    
      私有地址:
        A:10.0.0.0/8
        B:172.16.0.0/16-172.31.0.0/16
        C:192.168.0.0/24-192.168.255.0/24

    三、tcp协议

    基于socket通信、SOCKET_STREAM

    wKioL1nEt5fzevL2AADMGNPi4B4338.png

    四、跨Internet的主机间通讯

    MTU:最大传输单元

    分段:当MTU大小大于1500bytes时,需要对ip报文分段

    分片:路径MTU最小值小于1500时,需要分段

     



    五、HTTP协议

    Hyper Text Transfer Protocol  传输超文本的协议 80/tcp SOCKET_STREAM

      html :编程语言,超文本标记语言

      超文本:由html编程语言开发出的文本(网页中的链接点击后跳转至另一个网页,链接叫超文本链接)

    超文本格式 

    wKiom1nEuS7Tii_KAAA2TqP_0qY316.png

    MIME:多用途互联网邮件扩展 ,实现基于文本传输协议发送非文本数据

      1.0 支持MIME,扩展Method, 缓存机制薄弱

    wKioL1nEuHezY3RsAABFaz2unFQ496.png

     

      2.0 MIME,Method,缓存机制加强,spdy优势整合而来(spdy加速资源的获取)

    工作模式

      HTTP请求

      HTTP响应

    wKiom1nEuYCBD953AAAlcUj8SoQ102.png

    请求的内容: Web资源

    wKiom1nEueCB4nuCAABCqEa_Dcc852.png

    一个页面中有多个资源:每个页面是一个资源,每个页面有多个超链接,每个链接对应一个资源

    UV:User View 针对独立IP

    访问入口: 给定的地址

    被访问的资源:页面中引用的地址

    盗链/跨站引用:网站中的资源来自其他服务器上的资源

    URL:用于描述某服务器某特定资源的位置

      URI的子集:URL,URN(统一资源命名符)

      URL格式

    wKiom1nEu22Sdw8MAAAvYMzWsRw367.png

    http协议版本:

      HTTP/0.9 :原型版本,功能简陋
    
      HTTP/1.0 :第一个广泛使用的版本,支持MIME
      HTTP/1.1 :增强了缓存功能
    
      HTTP/2.0

    一次完整的http请求流程

    1、接收客户端请求<是否接收请求>

    2、接收请求(并发响应模型)

      接收来自于网络的请求报文中对某资源的一次请求的过程

      并发访问响应模型(Web I/O):

      • 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应
      • 多线程I/O结构 :并行启动多个线程,每个进程响应多个请求 <C10K问题>
      • I/O复用结构:一个进程响应n个请求

            多线程模型:一个进程生成N个线程,每个线程响应一个用户请求

            事件驱动:调用libevent库,实现事件驱动,水平触发

      • 复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求

    一个Pv有多个资源,每个资源是一个请求

      持久连接:tcp连接建立后不断开

      非持久连接:每处理一个请求都有tcp3次握手,4次挥手的过程。

     浏览器的自身限制是针对单个域名做限制的,它最多能打开几个线程;而针对多个域名来讲,每一个域名下都来可以同时打开多线程来访问

     比如:打开主站时使用www.a.com,而主站内部图片的引用有可能是在另一个域名下www.b.com,视频放在一个域名下,文本放在一个域名下

    如果一个域名后端开启二个线程,那么这个浏览器可以同时开启8个线程来加载相应的信息。

    具体参考:https://www.cnblogs.com/sunsky303/p/8862128.html

    3、处理请求(解析请求报文)对请求报文进行解析,并获取请求的资源及请求方法等相关信息

    元数据:根据HTTP请求报文首部,获取method

       <method><URL><HTTP-VERSION>首行
       Host:被请求的主机
       Connection :连接方式

    4、访问资源(method、路径映射)---获取请求报文中请求的资源

    web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源或动态运行后生成的资源,这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot

     DocRoot :/www/web

          http://www.magedu.com/images/1.jpg

            /www/web/images/1.jpg

    web服务器资源路径映射方式:
      a)DocRoot定义的路径即为映射的路径   b)Alias   c)虚拟主机DocRoot   d)用户家目录DocRoot

    5、构建响应报文(打包封装为httpd响应报文)

      资源的MIME类型

          显示分类

          魔法分类

          协商分类

       URL重定向:

         web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径

    6、发送响应报文

    7、记录一次事务的日志(用户行为分析)

  • 相关阅读:
    转自 Because of you 的总结
    转自 Good morning 的几句精辟的话
    (转)一句话小结各种网络流)
    上下界网络流总结
    浮云洲之战
    Poj3680 Intervals
    NOI2008假面舞会
    NOI2010航空管制
    python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)
    python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)
  • 原文地址:https://www.cnblogs.com/liuzhiyun/p/11728747.html
Copyright © 2011-2022 走看看