• [笔记] 《网络是怎么连接的》


    1、浏览器生成消息

    • URL:统一资源定位符,包含服务器域名,要访问的文件路径名等
    • 浏览器要先解析URL,确定要访问的Web服务器和文件名
    • GET:获取数据,命令后跟着URL,可在URL后面加上表单信息一起发给服务器
    • POST:向服务器发送数据,用于将表单中填写的信息发送给服务器进行处理
    • 浏览器通过HTTP协议访问Web服务器
    • 浏览器按规定格式生成HTTP请求消息
    • 浏览器根据域名查询Web服务器的IP地址
    • IP地址:一串32bit的数字,包括网络号和主机号(人使用名称,路由器使用IP地址)
    • DNS:域名服务系统,通过名称查询IP地址
    • Socket库:操作系统自带标准库,c语言编写,用于调用网络功能的程序组件集合
    • 浏览器委托操作系统将消息发给Web服务器
    • 浏览器调用Socket库的解析器,向DNS服务器查询Web服务器的IP地址
      • DNS服务器的IP地址作为TCP/IP一个项目事先设置好
      • 信息分布保存在多态DNS服务器中,DNS服务器相互接力配合查出信息
    • 浏览器向操作系统内部的协议栈发出委托,按指定的顺序调用Socket库中的程序组件
      • “数据管道”两端的出入口称为套接字
      • 收发数据过程:创建--连接--通信--断开
      • Socket表示库,socket表示程序组件,套接字表示管道两端接口
      • 浏览器--协议栈--网卡驱动/网卡--服务器

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

    • Socket库位于网络应用程序内部,协议栈位于操作系统内部
    • 网络应用程序--操作系统--驱动程序--硬件
    • ICMP:告知网络包传送过程中产生的错误和各种控制消息
    • ARP:根据IP地址查询相应的以太网MAC地址
    • 协议栈(Protocol stack):计算机网络协议套件的具体软件实现。协议套件中的一个通信协议通常只为一个目的而设计,每个协议模块和上下两个协议模块通信,最低层协议模块与硬件交互,每个高层增加更多的特性,用户应用程序只处理最上层协议
    • Socket:操作系统自带库,内部实现了TCP协议(3次握手,累积确认,分组缓存...)(稳定),socket作为留给上层应用的编程接口(变化)

    客户端socket程序(系统自动获得客户端ip并分配端口)

    1 clientfd = socket(...);
    2 
    3 connect(clientfd, 服务器的ip和port, ...);
    4 
    5 send(clientfd, 数据);
    6 
    7 receive(clientfd, ...);
    8 
    9 close(clientfd);
    View Code

    服务端socket程序

     1 listenfd = socket(...);
     2 
     3 bind(listenfd, 服务端ip和端口80, ...);
     4 
     5 listen(listenfd, ...);
     6 
     7 while(true){
     8 
     9     connfd = accept(listenfd, ...);
    10 
    11     recieve(connfd, ...);
    12 
    13     send(connfd, ...);    
    14     
    15 }
    View Code

    listenfd--创建socket用于监听

    bind--占用端口

    listen--开始监听

    accept--和客户端connect一起完成TCP三次握手

    • 套接字(插座):协议栈内部用于存放控制信息的内存空间,记录了通信对象的IP地址、端口号、通信操作状态等
    • 套接字对:定义连接两个端点的四元组,本地Ip+本地TCP端口+外地Ip+外地TCP端口,唯一标识一个网址上的每个TCP连接
    • 套接字操作:open, read/write, close(Everything is a file)
    • 文件:Interface File { int ( *open ){}; int ( *close ){}; int ( *read ){}; int ( *write ){}  }
    • 端口:TCP是进程间通信,客户端上可能有多个进程同时访问多个服务器,浏览器自动生成端口号进行访问,服务器指定端口号提供服务,端口用来区分进程(多路复用)
    • TCP:连接,收发,断开
    • IP:受TCP委托,将数据封装成包(IP不负责传输包,包的传输委托以太网进行)
    • UDP:不需要重发的数据用UDP更高效
    • 连接(准备):通信双方交换控制信息,在套接字中记录这些必要信息,分配缓冲区,准备数据收发
    • 网络包:以太网和IP控制信息+TCP控制信息+数据块
    • 浏览器委托协议栈发送HTTP请求,向Web服务器发送请求消息
    • Web服务器返回相应消息,发起断开过程(socket.close())

    3、从网线到网络设备(集线器、交换机、路由器)

    • 以太网(本地连接):是当今现有局域网采用的最通用的通信协议标准,定义了在局域网(LAN)中采用的电缆类型和信号处理方法。也指采用以太网协议的网络,互联设备间在以太网中以10-100Mbps的速率传送信息包
    • MAC头部:包含通过以太网的局域网将包传输至最近的路由器所需的控制信息
    • 网关(Gateway):路由器
    • 网卡:接收网络包(二进制),转换为电信号/光信号,通过网线/光纤发送出去,网卡的ROM中保存着全世界唯一的MAC地址,是生产网卡时写入的
    • 以太网通过广播,把包发给连接在同一以太网中的所有设备,得到接收放的MAC地址
    • ARP:地址解析协议,通过IP地址查询MAC地址
    • 全双工模式:可同时发送和接收信号
    • 网络包经过集线器和交换机,到达路由器,并再此被转发到下一个路由器
    • 路由器基于IP设计,交换机基于以太网设计
    • 路由器包括转发模块和端口模块,转发模块判断包的转发目的地,端口模块负责包的收发,分别相当于协议栈的IP模块和网卡模块
    • 路由器端口的硬件将包接收进来,转发模块根据包的IP头部记录接收方的IP地址,在路由表中进行查询,得到转发目标,最后由端口模块将包发送出去
    • ICMP:控制报文协议。包传输过程中出错时,用来发送控制消息
    • 地址转换:在转发网络包时对IP头部中的IP地址和端口号进行改写(公有地址<-->私有地址),提高了公有地址的利用率

    4、通过接入网进入互联网内部

    • ADSL:不对称数字用户线。利用金属电话线通信,上行方向(用户到互联网)和下行方向(互联网到用户)的通信速率是不对称的
    • FTTH:光纤到户
    • ISP:互联网服务提供商
    • 互联网接入路由器在网络包前加上MAC头部、PPPoE头部、PPP头后,发送给ADSL Modem
    • ATM:异步传输。以电话线为载体的传统电话技术基础上扩展出的通信方式,数据传输单位是“信元”
    • PPPoE:以太网点对点协议
    • RAS:远程访问服务器
    • DHCP:动态主机配置协议
    • 网络包通过接入网后,到达运营商POP的路由器
    • BAS:宽带接入服务器。路由器的一种,具有身份认证,向客户端下发IP地址等配置信息的功能
    • NOC:网络运行中心
    • POP:
    • BGP:边界网关协议
    • 互联网内部使用BGP机制在运营商之间交换路由信息
    • IX:互联网交换中心。实体是高性能交换机,将多个运营商连接在一起

    5、服务器端局域网

    • 防火墙:对包进行检查,只转发允许通过的包。一般和反病毒、非法入侵检测、访问隔离等机制并用
    • 将Web服务器放在网络运营商管理的数据中心,可获得更高的访问速度,更高的安全性
    • 包过滤:检查网络包头部的信息,设置包过滤字段(接收方IP,发送方IP,接收方端口,发送方端口,控制位等)
    • 缓存:
    • 负载均衡:使用多台相同的Web服务器分担负载(分布式架构)
    • 轮询:将访问平均给所有的服务器。缺点:无法识别服务器宕机,传输CGI动态网页时的连续性问题
    • 负载均衡器:定期采集Web服务器的CPU、内存使用率,判断负载情况。操作跨多个页面时不考虑负载,将请求发送到一台服务器上
    • Cookie:在HTTP头部字段中加上用来判断相关性的信息,便于负载均衡器判断是否将相关的请求发到同一台Web服务器
    • 缓存服务器:将整个系统按功能不同分为不同服务器,如Web服务器,数据库服务器,缓存服务器。通过代理机制对数据进行缓存
    • 反向代理:介于Web服务器和客户端之间,可对Web服务器访问进行中转,将Web服务器返回的数据保存在磁盘真能干,代替Web服务器将磁盘中的数据返回给客户端
    • 正向代理:客户端部署的缓存服务器,可实现缓存,防火墙等功能。在转发过程中可查看请求的内容,从而禁止员工访问与工作内容无关的网站。需要在浏览器中进行设置
    • CDSP:内容分发服务运营商。与多个Web服务器运营者签约,部署多台缓存服务器配合Web服务器工作
    • 使用内容分发服务时,如何从服务器中找到离客户端最近的一个,并让客户端去访问?
    • DNS服务器参照路由信息估算到客户端的距离
    • 重定向服务:根据客户端发来的HTTP消息的发送方IP地址估计距离

    6、请求到达Web服务器

    • 服务器启动之后,需要进行各种准备工作,才能接收客户端的访问
    • 服务器需要同时和多个客户端通信,每有一个客户端连接进来,就启动一个新的服务器程序,确保服务器程序和客户端是一对一状态
    • ACK:表示接收数据字段号有效,用于通知发送方数据已正确接收
    • 服务器程序分为等待连接模块和负责与客户端通信的模块
    • 服务器操作系统具有多任务/进程(程序),多线程(程序的一部分)功能
    • 发起连接的一方是客户端,等待连接的一方是服务器
    • 使用客户端的端口号+IP地址来判断发送给哪个客户端

     

     

  • 相关阅读:
    2018/2/26 省选模拟赛 0分
    2018/2/25 省选模拟赛 36分
    BZOJ 2428 JZYZOJ1533 : [HAOI2006]均分数据 模拟退火 随机化
    BZOJ 4036: [HAOI2015]按位或 集合幂函数 莫比乌斯变换 莫比乌斯反演
    BZOJ 3196 Tyvj 1730 二逼平衡树 树套树 线段树 treap
    POJ 2728 JZYZOJ 1636 分数规划 最小生成树 二分 prim
    JZYZOJ1998 [bzoj3223] 文艺平衡树 splay 平衡树
    POJ 3974 Palindrome 字符串 Manacher算法
    BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
    jQuery cookie使用
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12329268.html
Copyright © 2020-2023  润新知