• 3 网络协议入门


    1. 从淘宝买东西举例来说明一次请求中的,网络有关的部分
    2. 是打开浏览器,输入购物网站的地址:
    https://www.taobao.com/
    
    • 1
    1. 那么浏览器是怎么打开购物网站的首页的呢?
      (1)首先受到了一段http报文
    HTTP/1.1 200 OK
    Date: Tue, 27 Mar 2018 16:50:26 GMT
    Content-Type: text/html;charset=UTF-8
    Content-Language: zh-CN
    DOCTYPE html>
    <html>
    <head>
    <base href="https://www.taobao.com/" />
    <meta charset="utf-8"/> <title> 淘宝3 周年主会场 title>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (2)由于客户只是在浏览器地址栏输入:

    https://www.taobao.com/
    1.但是浏览器并不知道具体的淘宝的ip地址,因此浏览器需要去打开地址簿去查找,这个一般的地址簿使用的是DNS,或者是更精准的HTTPDNS
    2.无论是用的哪一种,最终都会得到一个ip:106.1xx.13x.2x
    
    • 1
    • 2
    • 3

    (3)知道了目标地址,浏览器开始打包请求:

    1.对于普通的浏览请求,往往会使用HTTP协议
    2.但是对于购物的请求,往往需要进行加密传输,因而会使用HTTPS协议
    3.无论是什么协议,里面都会写明“你要买什么和买多少”(请求参数)
    
    • 1
    • 2
    • 3

    (4)DNS、HTTP、HTTPS 所在的层我们称为应用层

    1.经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过 socket 编程来实现
    2.下一层是传输层,传输层有两种协议:
      a.一种是无连接的协议UDP
      b.一种是面向连接的协议TCP
    3.对于支付来讲,往往使用 TCP 协议。所谓的面向连接就是,TCP 会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达.
    4.TCP 协议里面会有两个端口:
      a.一个是浏览器监听的端口
      b.一个是电商的服务器监听的端口
    5.操作系统往往通过端口来判断,它得到的包应该给哪个进程。
    6.传输层封装完毕后,浏览器会将包交给操作系统的网络层
    7.网络层的协议是 IP 协议:
       IP 协议里面会有源 IP 地址,即浏览器所在机器的 IP 地址和目标 IP 地址,也即电商网站所在服务器的 IP 地址.
    8.既然知道了目标ip,那么改如何找到这个目标ip呢?
      a.操作系统往往先判断这个ip是本地ip,还是远程ip
      b.既然知道了目标ip是远程ip,不在本局域内,那么就需要通过网关去奔向目标ip
    9.本地网关之间的通讯基本靠吼(也就是ARP协议),网关响应之后,就会告诉客户端自己的地址,即MAC地址。
    10.于是这个ip包就给到了下一层:MAC层
       网卡再将包发出去,这个包里面就包含了MAC地址
    11.网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个 IP 地址应该怎么走,这个叫作路由表
    12由于请求带着目标的ip,路由器就会告诉请求,你的下一跳应该去哪里才可以访问到目标ip
      因为路由器之间也会经常通信,这种沟通成为路由协议,常用的有OSPFBGP
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    (5)当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个 Tomcat,将这个包发给电商网站。

  • 相关阅读:
    Docker容器日志查看与清理(亲测有效)
    【Kotlin】运算符函数、解构函数、中缀函数
    vue3,使用watch监听props中的数据
    数字化赋能半导体行业,B2B撮合系统助力企业缩短交易链路,实现高效供需匹配
    五、程序员指南:数据平面开发套件
    IDEA - 管理多个Git Remotes
    7. Component, Element, Instance 之间有什么区别和联系?
    第5章 网络编程
    我心目中的分布式操作系统
    深度学习模型理解-CNN-手写数据字代码
  • 原文地址:https://blog.csdn.net/weixin_39563769/article/details/134229824