前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浏览器发起HTTP请求后经历了什么?

浏览器发起HTTP请求后经历了什么?

作者头像
Liusy
发布2021-04-09 10:41:56
5340
发布2021-04-09 10:41:56
举报
文章被收录于专栏:Liusy01
前言

如果之前要是遇到TCP三次握手的问题

我的回答会是这样:

客户端发起一个连接请求,服务端应答,客户端收到应答后再发送请求给服务端。

但这样明显没答到点上,不知道每次请求应答里面携带的报文内容是什么?

又或是知道SYN、ACK,但每次请求的SYN、ACK是什么?

又为什么TCP握手不是两次、不是四次,而是三次?

奈何大学专业不是计算机,所以之前没接触,只能边搬砖边学习了。

基于这些问题,我读了《TCP/IP详解:卷1》,现在在公众号上分享一下我的笔记。

如有错,麻烦指正,谢谢!!!

TCP/IP概述

分层

网络协议通常分不同的层次进行开发,分别负责不同的通信功能。

TCP/IP通常被认为是一个四层协议系统,

分层

作用

例子

应用层

处理应用程序细节

Telnet、FTP、SMTP、SNMP

传输层

为不同主机的应用程序提供端到端的通信

TCP、UDP

网络层

处理分组在网络中的活动,例如分组的选路

IP、ICMP、IGMP

链路层

处理与传输媒介(比如电缆)的物理接口细节

设备驱动程序和接口卡

「作为一个非底层架构开发人员,只需要关注传输层和网络层即可」

  • TCP(传输控制协议) 提供高可靠性的数据通信,把数据进行分包交给网络层
  • UDP(用户数据包协议) 不可靠协议,把数据包分组从一台主机发往另一台主机,不保证数据报能送达

假设在一个局域网内有两台主机都运行FTP协议,那么它们各层的协议如下:

网络层IP提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。

TCP在不可靠的IP层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组、拥塞控制等机制。

「TCP与UDP的区别」

  • TCP是可靠的,为什么可靠,因为其提供了按序发送并确认、超时重传、发送确认、拥塞控制、流量控制等机制
  • TCP是面向连接的(传输之前要进行三次握手),而UDP不是
  • TCP有状态,UDP无状态
  • UDP是不可靠的

TCP/IP的分层

TCP和UDP是两种最为著名的运输层协议

二者都使用IP作为网络层协议

TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。

ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。

互联网的地址

互联网的每一个接口都必须有一个唯一的Internet地址(IP地址),IP地址长度为32bit

类型

范围

A

0.0.0.0 ~ 127.255.255.255

B

128.0.0.0 ~ 191.255.255.255

C

192.0.0.0 ~ 223.255.255.255

D

224.0.0.0 ~ 239.255.255.255

E

240.0.0.0 ~ 255.255.255.255

有三类IP地址:

  1. 单播地址(单个主机)
  2. 广播地址(给定网络上的所有主机)
  3. 多播地址(同一组内的所有主机)

域名系统

在TCP/IP领域中,域名系统(DNS)是一个分布式数据库,由它来提供IP地址和主机名之间的映射关系。

封装

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当做一串比特流送入网络,每一层收到的数据都要增加一些首部信息。

TCP传给IP的数据单元称作TCP报文段或简称为TCP段,IP传给网络接口层的数据单元被称作IP数据报,通过以太网传输的比特流被称作帧。

UDP数据和TCP数据基本一致,不同的是UDP传给IP的信息单元被称作UDP数据报,UDP的首部长是8字节。

IP首部有个8bit的数值称为协议域,标志数据属于哪一层。1标识ICMP,2标识IGMP,6标识TCP,17标识UDP。

以太网数据帧的物理特性是其长度必须在46~1500字节之间。

例如:一个HTTP请求数据报封装流程是这样的

分用

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称为“分用”。

HTTP从请求到应答的历程

从上一节的封装和分用,已经大概能推测出从浏览器发起HTTP请求到应答的整体流程了,接下来就用一个图片来详细看一下。

「收到网络数据报的处理流程:」

当一个网络包从一个网口经过的时候,首先看看要不要进行处理。有些网口配置了混杂模式,凡是经过的,全部都需要进行处理。

拿到网络数据包之后,先从buffer中摘掉MAC

如果MAC地址和当前MAC相符,说明是发给本机的,于是摘掉IP,看看到底是发给本机的还是希望从本机转发出去的。

如果IP地址不是本机,就应该转发出去。如果IP地址是本机的,就是发给自己的。

根据IP头里面的标示,拿掉三层的头,进行下一层的处理,判断到底是TCP还是UDP。

假设是TCP,此时Buffer里面没有三层的头,需要查看四层的头,判断是发起还是应答,又或是一个正常的数据报,然后分别处理不同的逻辑。如果是发起或应答,就可能要发送一个回复包;如果是一个正常的数据包,就需要较给上层应用处理。

交给哪个应用?在四层的头里有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听此端口,那就发给浏览器。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Liusy01 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TCP/IP概述
    • 分层
      • TCP/IP的分层
        • 互联网的地址
          • 域名系统
            • 封装
              • 分用
              • HTTP从请求到应答的历程
              相关产品与服务
              分布式数据库 TDSQL
              分布式数据库TDSQL是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高 SQL 兼容度、分布式水平扩展、高性能、完整的分布式事务支持、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档