本文主要依据《计算机网络:自顶而下的算法》

网络可以分为5层。自顶而下分别是应用层、运输层、网络层、链路层、物理层。而大多数主要关注于前三层。

自顶而下设计,当然,最先关注的是应用层。应用层与普通用户接触最广泛。并且,网络应用是计算机网络存在的最终理由。其中,网络应用由成对的进程组成,这些进程主要通过网络互相发送报文。两个进程互相发送报文,必须通过下面的网络。每一个进程通过套接字(Socket)的软件接口向网络发送报文和接收报文。有一个形象的比喻,进程可以比作一间房子,而套接字则相当于房子的门。我们往往不关注房子内部的构造,而比较关注房子向外界传递的内容。而传输经过的第一层介质便是运输层。所以,套接字是应用层与运输层之间的接口,也被成为应用程序与网络之间的应用程序编程接口(API)。我们常常研究交付房子外面的流经过程。在程序开发人员眼中,网络体系结构是固定的。应用程序常用的两种主流结构为:客户-服务器体系与对等体系。客户-服务器体系典型特点为客户之间不互相直接通信。对等体系(P2P)则与之相反。

由于房子向外传输的内容可以用不同的形式包装。比如可以用箱子,也可用袋子;小型的物件还可以用信封。选择什么样的形式是由传输的内容所确定。每一种形式对应于网络中有专用的术语称为“应用层协议”。应用层协议是网络应用的重要部分。往往网络程序设计时就需要思考采用什么应用层协议。常见的协议有超文本传输协议(http)、SMTP协议、POP3、IMAP等。其中具体内容不在此研究。有兴趣可以抽空研究。

运输层与网络两者之间存在细微而重要的差别。在定义中,运输层为运行在不同主机(类似于家族)的进程(每一个房子)之间提供逻辑通信,网络层提供主机(家族)之间的逻辑通信。可以通过比喻进行理解区别。考虑古时候,有两大家族,分别位于东西海岸。每个家族中有一个邮差分别为A、B,分别负责收集每一户信件。他们收集完信件,交付给传送的邮局负责人,进行两地之间交流。在这个过程中,应用层报文对应于信封上字符,进程对应于每一户,主机对应于家族,运输层协议对应于A、B。网络层对应于骑士。当A、B生病时,可以委托给C、D。而邮局负责人负责的任务重大,这就是网络层。许多网络提供了不止一种运输层协议。但主流方式有两个。一种是面向连接的TCP,一种是提供最小服务的UDP。此处不细展开。

通过上一个事例,可以简单区分运输层与网络层的区别。网络层为主机到主机之间的传输。个人以为是决定传输速度快慢的关键方式。将网络层拆解,可以分为数据平面和控制平面。路由便在控制平面起作用。其中具体概念此处不展开。

在向下便为链路层。链路层设计较多物理概念与定义。运行链路层协议(第二层)的任何设备都称为节点。节点包括主机、交换机、路由器、WiFi接入点。而连接相邻节点的通信信道称为链路。此处概念常常用于拓扑构建。每一种传输方式对应于链路层协议。

物理层书上介绍较少,此处省略。

本文主要就计算机网络整体逻辑结构进行总结。其中,每个模块具体内容没有进行具体展开。具体概念需要以后自己再认真总结。


最后,添加大神写的计算机网络内容,以便加深理解

计算机网络整体框架理解与把握(持续更新)相关推荐

  1. 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))

    机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...

  2. 通俗易懂SpringMVC整体框架理解

    最近又重新温习了一下前台SpringMVC框架,能够从整体上对SpringMVC有一个全局的认识.在这里也总结一下,为那些即将学习SpringMVC的亲们,做一个很好的开端吧! 1. SpringMV ...

  3. unity ui框架_[教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了

    ----------------塔防(更新中),作者重写了基础篇(下方目录为:1.1(新) 基础)目前还在持续连载了5篇,因为不多我们更新完就能追到原作者的进度了------------------- ...

  4. 计算机网络学习——王道教材书(持续更新)

    计算机网络 文章目录 计算机网络 1.计算机网络体系结构 1.1计算机网络概述 1.1.1计算机网络概念 1.1.2计算机网络组成 1.1.3计算机网络功能 1.1.4计算机网络分类 1.2计算机网络 ...

  5. spice整体框架理解

    static int do_spice_init(SpiceCoreInterface *core_interface):SpiceCoreInterface 的数据类型: struct SpiceC ...

  6. Intel SGX初步学习理解笔记(持续更新)

    一些概念 SGX(Software Guard eXtensions)软件保护扩展:是一组CPU指令扩展,能够创造出一个可信执行环境来保护代码和数据,即使使用root 权限也无法访问.通过这个硬件设施 ...

  7. SSM框架常用注解总结(持续更新)

    一.类注解 1.@Configuration spring配置类注解 2.@ComponentScan() spring扫描功能,默认情况下会扫描该类下的所有包 @ComponentScan({&qu ...

  8. mysql查询更新优化_mysql查询优化(持续更新中)

    1.索引不会包含有NULL值的列 (1)   应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2)   数据库设计时不要让字段的默认值为null,可以 ...

  9. 关于渗透的一些思路持续更新(自我理解)

    关于渗透的一些思路持续更新(自我理解) 先回忆一下 准确的是17年才接触到渗透以及ddos 其他hei产东西就不介绍了 接触的自我感觉有点迟 从最开始我也是从阿D明小子那些很傻瓜化的软件走过来的 但是 ...

最新文章

  1. v-model无法对返回的数据进行填写_学会数据分析思维,学会透过事物看本质
  2. 十代i7前端总线频率_七彩虹Z490 Vulcan X主板体验+i7-10700K超频测试
  3. 计算机组成原理—— 指令系统
  4. 【图数据库】Window下的安装Neo4j
  5. 允许服务与桌面交互_vivo 正式推出 Origin OS,融合自然设计与全新交互
  6. mysql gui vim_vim(一): 小技巧
  7. java synchronized boolean_java中synchronized关键字
  8. INF文件修改注册表
  9. POJ 1149(最大流)
  10. 华为电脑终于又能搭载正版 Windows 系统了!
  11. JavaScript中this指针的绑定规则
  12. 开课吧:大数据时代,数据分析的特点是什么?
  13. java语法和python语法的一些区别
  14. wmf和emf格式的图片有什么区别? JPG图片如何转换WMF文件?
  15. 网络电视机顶盒的工作原理
  16. [置顶] 得失寸心知
  17. AT2402E射频前端单芯片替代RFX2402E
  18. 零基础学python难吗?python自学难吗?
  19. 整理项目管理中的挣值管理相关计算 AC PV EV BAC CV SV CPI SPI ETC EAC 计算
  20. 数学建模学习(22):求解微积分之积分问题详解,超详细!

热门文章

  1. jqgrid mvc_jqGrid,REST,AJAX和Spring MVC集成
  2. 即时大数据流处理=即时风暴
  3. 简而言之,JUnit:测试隔离
  4. HBase:为客户行为生成搜索点击事件统计信息
  5. 针对新手的Java EE7和Maven项目–第6部分
  6. 针对新手的Java EE7和Maven项目-第4部分-定义Ear模块
  7. JAX-RS 2.0中的透明PATCH支持
  8. Spring 3.2的REST异常处理
  9. Hibernate继承:每个类层次结构的表
  10. JUnit与EasyMock合作