TCP/IP相关知识

Posted by wantu on December 3, 2020

开始

我们在地址栏中输入www.baidu.com发生了什么?

地址栏输入演示图

流程:

  1. 域名解析
  2. 发起TCP3次握手
  3. 建立TCP连接后发起http请求
  4. 服务器响应请求,返回结果
  5. 浏览器获取到响应,构建DOM

网络

它在哪?

何为网络

它理想的样子:

OSI7层模型

每一层的作用:

OSI7层模型的作用

现实中实际使用的TCP/IP协议簇的样子–五层模型:

TCP/IP协议簇

问题1 为什么TCP/IP协议要进行分层,有哪些好处以及坏处?

A:…

模块通信

OSI模块通信

从模块通信再看地址栏中输入www.baidu.com

1
2
3
4
5
6
7
8
软件通信方式大致分为2类:电路交换和分组交换。TCP/IP 采用的是分组交换协议。

1. 用户在地址栏中输入地址
2. 本机请求DNS域名服务器获取到对应IP(DNS工作机制--逐渐往上层查询)
3. 在运输层中选择何种协议进行数据传输,并且发送端口号(识别应用)、目标端口号记录在TCP首部或者UDP首部。并将数据进行切分为数据段。
4. 在网络层进行IP寻址、路由(寻径)、IP的分包和组包,组包过程中会填充源IP地址和目标地址
5. 数据链路层 以太网帧格式中会填充源MAC地址和目的MAC地址(帧即是01的数据集合)
6. 物理层将帧拆解通过光电信号进行传输

进阶

运输层

TCP

特点:可以实现全双工的并且是可靠的数据传输。

实现手段:校验和、序列号、确认应答(ACK)、重发控制、连接管理、窗口控制。

1.连接管理中三次握手四次挥手。
问题2: 建立连接是三次,断开连接却是四次?

四次挥手

2.重发控制中的重发时间的确认。

1
2
3
理想:确认应答一定能在n ms中返回。那么这个n就是。
实际:时间长短会随着数据包途径的网络情况不同而变化。
计算方式:计算往返时间以及其偏差相加重发超时时间,就是比这个总和要稍微大一点的值。

3.TCP的拥塞控制。

1
UDP

特点:不提供复杂的控制机制,利用IP提供面向无连接的通信服务。

网络层

路由

路由控制

数据链路层

共享介质网络

特点:多个设备共享一个通信介质的一种网络。

介质访问控制方式:

1、争用方式。采用先到先得的方式占用信道发送数据,如果多站同时发送帧,则会产生冲突现象。

解决: CSMA/CD 方式,发送数据帧前检查信道,没有数据流动则任何站都可以发送数据,如果产生冲突,则立刻释放载波信道,放弃一段随机时间后再重新争用介质,重新发送。

2、令牌传递方式

特点:令牌传递方式是沿着令牌环发送一种叫做令牌的特殊报文,只有获得了令牌才能发送数据。

解决了哪些问题:1、不会产生冲突 2、每个站都有通过平等循环获得令牌的机会。

问题: 在网络拥堵的情况下数据链路的利用率达不到100%。

非共享介质网络

特点:不共享介质,对介质采用专用的一种传输控制方式,在此种方式下,网络的每个站直连交换机,由交换机负责转发数据帧。

问题:一旦交换机出问题,与之相连的计算机都将无法通信。

以太网的连接形式

发展历程: 由多台终端使用同一根同轴电缆的共享介质行的连接方式 => 一般采用终端与交换机之间独占电缆的方式实现以太网通信。

问题

问题1:为什么TCP/IP协议要进行分层,有哪些好处以及坏处?

1
2
3
4
5
6
7
8
优势:
1. 每一层都是独立的,即是某些层发生变化,也不会波及整个系统。
2. 通过细分通信功能,更易于单独实现每个分层的协议。

劣势:
1. 可能导致过分模块化,使处理变得更加沉重。
2. 每个模块可能不得不实现相似的处理逻辑。

问题2:建立连接是三次,断开连接却是四次?

1
2
建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接。
释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。