计算机网络--TCP/IP四层模型

TCP/IP四层模型

在了解TCP/IP四层模型前,我们先来了解一下OSI七层结构。

OSI七层模型
计算机网络--TCP/IP四层模型
虽然OSI七层模型划分的很完美,但是在实际应用当中有一些层的工作是重复的,所以出现了更贴近实际的TCP/IP四层模型。TCP/IP四层模型其实也就是将一些出现重复工作的层进行合并。比如将数据链路层和物理层合并为了网络接口层,现在请看图。

TCP/IP四层模型
计算机网络--TCP/IP四层模型
各层之间是相互独立的,也就是说每一层不需要直到相邻层是如何实现的,层与层之间的耦合度是非常低的。

根据TCP/IP模型,数据是如何传输的,现在贴一张图来演示数据的传输:假如计算机A要传输数据给计算机B,A中的数据从应用层从上到下传到网络接口层,然后通过路由器,从网络接口层到应用层到B。这里的路由器不仅仅是一个,它网络拓扑图中的一个缩影,可以经由多个网络到达B。
计算机网络--TCP/IP四层模型
接下来我会一个层一个层来介绍。

物理层
1.物理层的作用就是连接不同的物理设备。

如果我们在国内想要访问美国的网站,就是我们国内的ISP通过海底电缆连接到美国的ISP(网络服务提供商),再比如路由器与计算机通过网线的连接,这些就是物理层的作用。

2.传输比特流。

也就是01数字信号。



数据链路层

数据链路层有三大作用:
1.封装成帧:
将物理层传输过来的数据封装成帧,分别为帧头部,数据,帧尾部。帧头部和帧尾部也就是和数据一样的01数字信号,只不过是特别规定的。

2.透明传输
因为帧头部和帧尾部特别规定的01数字信号,在数据中也可能出现和它们相同的,这就需要透明传输来避免,这就和字符串匹配类似,比如要匹配/,那就在/前再加一个/来转义它。

3.差错校验
在物理层的传输过程中,可能因为一些原因造成数据传输不完整,数据链路层就会来校验数据的完整性



网络层

网络层就是来解决数据传输的问题,举一个例子,我们中国有电信,移动,联通等ISP,我是移动用户,假如移动在北京和上海有两个地区ISP,但是呢,如果我在浙江想下载广东那的数据,那是通过北京的ISP,还是上海这边的快呢,从连接的距离上,是连接上海的更快一些。例子举得不是很好,希望能够理解这个意思。

网络层有很多重要的协议,比如:

  1. IP协议:逐跳的传输数据路径
    IP协议转发流程:逐跳:电脑A–跳路由–跳中型网络–跳大型网络–跳路由–目标电脑B
  2. ARP协议:32为ip地址转换为48位mac地址
  3. RARP协议:48位mac地址转换为32位ip地址
  4. ICMP协议:辅助IP协议,报告错误信息以及异常情况


传输层

管理端到端的通信连接。
计算机网络--TCP/IP四层模型
因为网络层和网络接口层已经帮我们做好了相关的事情,传输层就专注于两端的数据传输。

在网络层有两个重要的协议:

  1. UDP协议:
    1.是一个无连接
    2.不保证数据可靠交付
    3.没有堵塞控制的
    4.面向数据报的

  2. TCP协议:
    1.TCP是面向连接的协议
    2.点对点的通信
    3.提供可靠的传输服务
    4.全双工的通信:双方都能在通道中发送数据
    5.面向字节流的协议

关于TCP

1.TCP的可靠传输----连续的ARQ协议

利用一个滑动的窗口,批量发送数据,返回的数据是多少,就代表这个数据之前的数据都已经收到了,然后窗口向后移动相应的字节数,发送窗口内未发送的数据。

计算机网络--TCP/IP四层模型


2.TCP协议的流量控制

计算机网络--TCP/IP四层模型
通过TCP头部中的窗口的大小,来控制流量,图中倒数第二个操作,告知窗口大小位0,发送方则不再发送数据。但是这里有个问题,如果接收方在告诉发送方可以发送数据的这个消息在传输过程中失败了,那发送方将不再会发送数据给接收方。

解决:
坚持定时器:发送方在收到不再让发送数据的信息后,会设置坚持定时器,每隔一段时间,询问一下接收方是否可以发送数据。


3.拥塞控制:整个网络的通信量的控制

怎么判断是否发生拥塞控制:
一般来说,报文超时则认为是拥塞,但不一定是。

1.拥塞控制中的算法

慢启动算法:
从小到大逐渐增加发送数据量
没收到一个报文确认,就+1。是指数增长的1,2,4,8…到达慢启动阈值

拥塞避免算法:
维护一个拥塞窗口的变量。
只要网络不拥塞,就试探着拥塞窗口的增大。可以结合慢启动算法,到达慢启动算法阈值,使用拥塞避免算法。



TCP的三次握手
计算机网络--TCP/IP四层模型

TCP的四次挥手
计算机网络--TCP/IP四层模型
第一次挥手:发送方告诉接受方,我要断开连接了
第二次挥手:接收方告诉发送发,我已经收到你要断开连接的消息了
第三次挥手:接收方接受完数据后告知发送方,我已经可以断开连接了
第四次挥手:发送方告知接收方,收到了你的断开连接消息

为什么需要这个等待定时器:

1.最后一次的挥手报文,如果没有发送到接收方,就会再次发送
2.等待计时器的时间一般为2倍的最长报文传输时间,以保证之前的挥手报文都已失效。


应用层
面向用户的一层,为用户提供服务。

DNS:域名系统,使用域名帮助记忆,因为IP难于记忆。
域名由点、字母和数字组成 点分割不同的域
域名可以分为*域、二级域、三级域
*域分为国家(cn, us, uk, ca)和通用(com, net, org, gov)
二级域:aliyun, taobao, amazon, baidu, google, alibaba, facebook

HTTPS协议:
计算机网络--TCP/IP四层模型

SSL安全参数握手

计算机网络--TCP/IP四层模型