前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试(一) 网络总结

面试(一) 网络总结

作者头像
宇宙无敌暴龙战士之心悦大王
发布2022-01-10 11:34:44
5270
发布2022-01-10 11:34:44
举报
文章被收录于专栏:kwaikwai

浏览器输入网址之后发生了什么

1,浏览器解析url,本质就是请求服务器的文件资源。

2,http协议生成请求报文,有get和post格式。

3,DNS解析 -查询域名所在的ip地址。

DNS从右往左(www.刘昊然.com) 分为 根DNS服务器(最上层看不见),顶级域DNS服务器(com),权威DNS服务器(刘昊然.com)。

根域的 DNS 服务器信息保存在互联⽹中所有的 DNS 服务器中,所以找到任意一台DNS,就能找到ip地址了。

这里生成新问题域名解析的工作流程,这问题之后写。

4,得到IP地址后,接下来给操作系统里的协议栈,协议栈工作流程见下面问题

5,总结的4的过程

  1. TCP协议将请求报文分割成报文段,进行可靠传输
  2. IP协议进行分组转发
  3. TCP协议重组请求报文
  4. HTTP协议对请求进行处理

域名解析的工作流程

1,客户端会发起一个DNS请求,问域名的ip是啥,首先给本地DNS服务器(就是客户端的TCP/IP设置中填写的DNS服务器地址)。本地DNS服务器收到请求后,如果缓存能找到域名,就直接返回ip。

2,如果缓存里没有,本地DNS就去问根域名服务器,然后根域名服务器会告诉你这个域名的顶级域DNS服务器,如www.刘昊然.com,根DNS服务器会告诉你com所在的顶级域DNS服务器的地址。

3,然后本地DNS发请求问顶级域dns服务器的权威DNS服务器地址。

4,然后权威DNS服务器就会告诉本地DNS这个域名的ip。

5,本地将IP地址返回客户端,同时存入缓存,客服端和目标建立连接。

协议栈工作流程

1,浏览器先调用socket库,来委托协议栈工作。

2,协议栈分两部分,分别是

  • 负责数据收发的TCP和UDP协议。
  • IP 协议控制⽹络包收发操作。在互联⽹上传数据时,TCP将数据切分成⼀块块的⽹络包,⽽将⽹络包发送给对⽅的操作就是由 IP 负责的。

IP协议有两层

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

3,IP 下⾯的⽹卡驱动程序负责控制⽹卡硬件,⽽最下⾯的⽹卡则负责完成实际的收发操作,也就是对⽹线中的信号执⾏发送和接收操作。

TCP - 可靠传输

HTTP是基于TCP来传输的。

TCP报文格式

  • 源端口号和目的端口号必须要的,不然数据不知道发给哪个应用。
  • 序号确定数据包的顺序。
  • 确认序列
  • 状态位:SYN是发起连接,ACK是确认,RST是重启连接,FIN是结束连接。
代码语言:javascript
复制
TCP 是⾯向连接的,因⽽双⽅要维护连接的状态,这些带状态位的包的发送,会引起双⽅的状态变更。
  • 还有⼀个重要的就是窗⼝⼤⼩。TCP 要做流量控制,通信双⽅各声明⼀个窗⼝(缓存⼤⼩),标识⾃⼰当前能够的处理能⼒,别发送的太快,撑死我,也别发的太慢,饿死我。
  • 除了做流ᰁ控制以外,TCP还会做拥塞控制,对于真正的通路堵⻋不堵⻋,它⽆能为⼒,唯⼀能做的就是控制⾃⼰,也即控制发送的速度。不能改变世界,就改变⾃⼰嘛。

在 HTTP 传输数据之前,⾸先需要 TCP 建⽴连接,TCP 连接的建⽴,通常称为三次握⼿。

第一次握手:客户端和服务端处在closed状态,客户端发SYN给服务端。

第二次握手:服务端收到SYN后,发送客户端一个SYN和ACK。

第三次握手:客户端收到后,发送服务端一个ACK的ACK。然后客户端和服务器建立连接。

所以三次握手的是保证双方都有发送和接收的能力。

TCP 的连接状态查看,在 Linux 可以通过 netstat -napt 命令查看。

三次握手的原因

三次握⼿才可以阻⽌重复历史连接的初始化(主要原因) 三次握⼿才可以同步双⽅的初始序列号 三次握⼿才可以避免资源浪费

断开需要用4次握手

第一次握手:客户端给服务端发送FIN,然后客户端处于不发送数据能接受数据的状态。

第二次握手:服务端给客户端发送ACK,确认,然后服务器还有数据要处理或发送。

第三次握手:等服务端处理完,发送第二次FIN,确实现在可以停止连接了。

第四次握手:客户端发送ACK确认,然后断开连接。

为什么需要四次握手,上面就是原因了。因为服务器要处理数据,不能和连接时一样。

TCP如何分割数据

如何http数据长度超过MSS长度时,需要分割。

分割数据然后每一块都要加上tcp头,再加上ip头。

具体见 图解网络 384页。

TCP生成报文

具体见 图解网络 385页。

两点传输 MAC

⽣成了 IP 头部之后,接下来⽹络包还需要在 IP 头部的前⾯加上 MAC 头部。

MAC 头部是以太⽹使⽤的头部,它包含了接收⽅和发送⽅的 MAC 地址等信息。

MAC头格式

ip协议里的ARP协议用于获取MAC地址。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 浏览器输入网址之后发生了什么
  • 域名解析的工作流程
  • 协议栈工作流程
  • TCP - 可靠传输
  • TCP如何分割数据
  • TCP生成报文
  • 两点传输 MAC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档