石头人面试HTTP之网络TCP/IP

前言

小伙伴们在面试过程当中会遇到一些HTTP/网络TCP/IP相关问题web

我大概收集整理了下面试

  1. TCP的3次握手&4次挥手
  2. TCP属于哪一层
  3. TCP/IP分层
  4. 介绍DNS解析
这些问题咱们均可以在如下文章中找到答案

网络基础TCP/IP

  1. web使用一种名为http(超文本传输协议)的协议做为规范,完成从客户端到服务器端的运做流程
  2. 一般使用的网络是在TCP/IP协议族的基础上运做的,它是互联网相关的各种协议族的总称,HTTP属于它内部的一个子集,
  3. TCP/IP按层次分为,应用层传输层网络层数据链路层segmentfault

    • 应用层 决定了向用户提供用用服务时通讯的活动,
    • 传输层 提供处于网络链接中的两台计算机之间的数据传输
    • 网络层 处理网络上流动的数据包
    • 链路层 处理链接网络的硬件部分
总体流程

(1)应用层 获取http请求报文,转发给传输层

(2)传输层 把报文分割,打上标记及端口号,转发给网络层 (TCP)

(3)网络层 增长做为通讯目的地的mac地址,转发给链路层  (IP)

(4)链路层 服务器端在链路层接收到数据,再逐层向上转发到应用层(以太网)

发送端 在层与层之间传输数据时 会被打上该层所属的首部信息,反之

接收端 在层与层之间传输数据时 每通过一层是会把对应的首部消除

传输层 TCP

  • 方便传输 把大块数据分割成报文段为单位的数据包进行管理

TCP协议采用三次握手,保证数据准确送达服务器

缘由网络

在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的链接请求报文段忽然又传送到了服务端,于是产生错误”。
在另外一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。

ACK : TCP协议规定,只有ACK=1时有效,也规定链接创建后全部发送的报文的ACK必须为1
SYN(SYNchronization) : 在链接创建时用来同步序号。当SYN=1而ACK=0时,代表这是一个链接请求报文。对方若赞成创建链接,则应在响应报文中使SYN=1和ACK=1. 所以, SYN置1就表示这是一个链接请求或链接接受报文。计算机网络

三次握手

(1)客户端发送一个SYN标志的数据包给对方,(SYN=1,seq=x,)code

(2)服务端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息(SYN=1,ACK=1,seq=y,ack=x+1)客户端收到包以后,状态切换为ESTABLISHEDip

(3)客户端收到后,回传一个带ACK标志的数据包表明握手结束 (ACK=1,seq=x+1,ack=y+1),服务端收到包以后,状态切换为ESTABLISHED资源

seq 同步序列号,第一次随机生成seq的序列x, 以后在此基础+y(y为数据长度,无数据则y=1)

ack 应答序列号 在seq基础上+1get

这时 客户端和服务器端就能够开始传送数据

四次挥手

关闭是一个全双工的过程,发包的顺序的不必定的。通常来讲是客户端主动发起的关闭,最后一次客户端发出的数据seq = x, ack = y

(1)客户端, 状态为FIN_WAIT_1 发出FIN包(FIN=1 ack=y seq=x+1)

(2)服务端收到后, 状态切换为CLOSE_WAIT 发出ACK包(ACK=1 ack=x+2) 客户端收到包以后状态切换为FNI_WAIT_2

(3)服务端处理完任务后,状态切换为LAST_ACK, 发出FIN包(FIN=1 seq=y)

(4)客户端收到后, 状态切换为TIME_WAIT 发出ACK包(ACK=1 ack=1)等待2MSL后关闭链接

网络层 IP

  • IP地址指明了节点被分配到的地址
  • mac地址指网卡所属的固定地址
  • ip地址会变, mac地址基本不会变

DNS域名解析

DNS协议经过域名查找IP地址,或逆向从IP地址反查域名服务
URI和URL
- URI 统一资源标识符,标识某一互联网资源
- URL 统一资源定位符,表示资源地址
- URL是URI的子集

下一章

石头人面试HTTP之http协议2.0/SPDY

相关文章
相关标签/搜索