TCP/IP协议学习笔记

一、网络协议的分层

最近正在上网络协议分析的课程,课程已经接近尾声,因此做一些总结性的记录。


为什么要进行分层呢

我们思考这样一个问题——我打算实现一个QQ,我需要解决哪些问题呢?

  • 要想登录QQ,我必须填写账号和密码,然后由服务器对我进行身份的认证,只有认证成功了,我才能成功登陆。那么我的账号和密码是怎么发送给服务器的呢?所谓“当局者迷”,我的电脑是怎么在这世界上这么多的服务器中准确的找到腾讯QQ的服务器的呢?难道它也是像我们平常找人一样在门口大喊一声:“谁是QQ的服务器吗”?
  • 假设QQ服务器现在已经知道了我要登录,然后他发送给我一个消息告诉我说他就是QQ的服务器,那么我可以相信他吗?会不会是其他的捣蛋鬼冒充QQ服务器给我发的消息呢?
  • 假设前面的问题我们都解决了,当我跟我的好朋友私聊的时候应该怎么实现呢?群聊的时候呢?难道是同样的实现方法吗?
  • 再假设前面所有的问题都解决了,我们知道了物理的链路上,数据肯定是以01串的形式传递的,那么服务器和我的电脑是怎么把这些人类根本看不懂的01串识别成好看的图片识别成美妙的音乐的?
  • ……

    这样的问题还可以提出非常多,他们有的涉及底层的硬件,有的涉及非常具体的代码实现;有的只涉及我本机上的实现,有的又涉及到整个互联网尺度的实现?怎么设计?倘若程序员每编写一个网络应用程序都需要像这样思考,那么他一生估计都写不了几个网络应用程序,因为这实在是太繁琐了。解决的办法是什么呢,那就是分层。我们把一个巨大的、复杂的问题,划分成若干个小的问题,只要各个击破,整个大的问题肯定能够得到解决。分层的好处就在于此,他使得我们可以不必一次性考虑所有的实现细节,各个击破。

OSI七层模型

OSI七层模型,是由ISO(国际标准化组织)组织在1985年研究的网络互连模型。其基本的结构和各分层的作用如下图:

TCP/IP协议学习笔记_第1张图片

TCP/IP五层模型

事实上,网络中有各种各样的网络协议,其中TCP/IP协议族是我们应用最为广泛的协议,因此我们主要学习的也是TCP/IP协议族。

TCP/IP协议各层与OSI各层的对应关系如下图:

TCP/IP协议学习笔记_第2张图片

TCP/IP分层模型中的两个边界

  • 协议地址边界:位于数据链路层与网络层(IP层)之间,从该边界网上的各层看到的是IP地址,这样一来,我们就可以隐藏底部物理网络的实现细节,从而给上层提供一个统一格式的IP地址来进行通信。

为什么说IP隐藏了底层物理网络的实现细节呢?比如说以太网的物理地址是六个字节,但是令牌环网的物理地址就不是六个字节,还有其他的一些结构的物理网络,他们的物理地址的格式都不统一。因此,IP地址使得这种不统一透明化了,简化了设计。

  • 操作系统边界:位于应用层和传输层之间,传输层以及其下各层属于操作系统的内部实现,应用层则属于操作系统的外部实现。当然,这一个分界有的时候是没有那么绝对的,因为应用层协议的含义非常广泛,我们甚至可以自己制定应用层的协议。

分层模型下的数据封装

协议分层能够帮助我们讲计算机网络这个复杂的系统分解成不同层次来看到,然后在不同层次解决问题并为上一层提供服务,从而简化设计难度。那么数据在这样的协议栈下是怎样一层一层的封装的呢?

TCP/IP协议学习笔记_第3张图片

分层模型下的通信过程

前面我们提到了数据在这样分层的模型下是怎样在协议栈中一层一层的封装成物理帧的,这其实是发送端发生的事情,那么在整个的通信过程中又发生了什么呢?
TCP/IP协议学习笔记_第4张图片


总结

本文大概的总结了TCP/IP协议的分层模型,主要是需要理解为什么需要分层,以及协议栈的工作过程。


参考资料

  • OSI七层模型与TCP/IP五层模型
  • TCP/IP协议分层详解
  • TCP/IP基本概念以及通信过程

你可能感兴趣的:(网络协议)