跳到主要内容

web及网络基础

什么是TCP/IP分层协议

计算机与网络设备要相互通信,双方就必须基于相同的方法,通信的规则就叫做协议。把与互联网相关联的协议集合起来总称为 TCP/IP。TCP/IP协议族按层次分别分为应用层、传输层、网络层、数据链路层。相对于OSI模型简化了表示层和会话层,数据链路层细化为了链路层和物理层。分层协议的好处是每个层次可以只考虑当前层次的任务,使设计更加简单。

应用层

决定向用户提供应用服务时通信的活动。常见的http协议处于该层,预存了各类通用的应用服务,如FTP,DNS

传输层

对接应用层,将应用层的数据进行处理(如http报文分割打标记)后转发给网络层,传输层有两个不同性质协议:

  1. TCP 传输控制协议
  2. UDP 用户数据报协议

网络层

将上层的数据包处理为二进制的数据包(上课学到的曼彻斯特编码差分曼彻斯特编码好像在这里挥发?),选择一条路线传输给对方,IP协议处于这层

数据链路层

硬件部分,包含系统、硬件驱动、网卡、网线等。

TCP/IP通信流

发送端从应用层往下走,接收端从链路层往上走

TCPIP

与http相关的IP、TCP、DNS

IP协议-负责传输

几乎所有的网络系统都会使用到IP协议,作用是将各种数据包传送给对方,首先要满足IP(节点被分配到的地址)地址和MAC(网卡的固定地址)地址。使用ARP协议,可以通过IP地址反查出MAC地址。中转的过程可能需要多次传输,中间交由多个路由器进行转发。

TCP协议-确保可靠性

TCP处于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指,为了方便传输, 将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。

一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

三次握手-确保数据能够到达目标

使用三次握手策略,TCP把数据包发送出去一定会向对方确认是否送达。握手过程使用了TCP的标记,SYN和ACK。

  1. 发送端:发送标记有SYN的数据包。并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。
  2. 接收端:发送带有SYN/ACK的数据包。服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。
  3. 发送端:发送带有ACK的数据包。客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。
    接收端收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接

多说点作用

  • 确认双方的接受能力、发送能力是否正常。
  • 指定自己的初始化序列号,为后面的可靠传送做准备。
  • 如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。

四次挥手-关闭TCP连接

刚开始双方都处于 establised 状态

  1. 发送端:发送一个 FIN 报文。报文中会指定一个序列号。此时发送端处于FIN_WAIT1状态。
  2. 接收端:会发送 ACK 报文。收到 FIN 之后,会发送 ACK 报文,且把发送端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到发送端的报文了,此时接收端处于 CLOSE_WAIT状态。
  3. 接收端:发送 FIN 报文。如果接收端也想断开连接了,和发送端的第一次挥手一样,发给发送端 FIN 报文,且指定一个序列号。此时接收端处于 LAST_ACK 的状态。
  4. 发送端:发送 ACK 报文。收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把接收端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时发送端处于 TIME_WAIT 状态。需要过一阵子以确保接收端收到自己的 ACK 报文之后才会进入 CLOSED 状态。
    接收端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

DNS

域名服务器,DNS协议通过域名查找IP地址,或者可以逆向从IP地址反查域名。

TCPIP

参考文章

《图解http》
掘金