热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机网络的五层协议体系

转载地址:https:my.oschina.netu1378445blog285939五层模型主要是结合了osi的七层和tcp/ip的四层得出,主要是物理层、数据链路层、网络层、传

转载地址:https://my.oschina.net/u/1378445/blog/285939

五层模型主要是结合了osi的七层和tcp/ip的四层得出,主要是物理层、数据链路层、网络层、传输层、应用层五层,下层向上层提供服务,上层向下层提供接口。作为一个iOS开发者接触比较多的就是上面两层,所以本文也主要介绍上面两层。



传输单位

    先讲一讲各层的传输单位,应用层是报文(message),报文在发送之前一般会划分成为等长的数据段,在每段前面加上一些必要的控制信息组成的首部后,就构成了一个分组(packet),也叫做包,首部也可叫包头。无论在哪一层传送的数据单元,习惯上都可以笼统地用分组来表示。

    传输层主要使用TCP和UDP,如果使用TCP的话,单位是报文段(segment),UDP的单位是用户数据报。在发送数据时,网络层把传输层产生的报文段或者用户数据报封装成分组或包进行传送,由于网络层使用IP协议,分组也叫做IP数据报,简称数据报。 数据链路层将网络层交下来的IP数据报组装成帧(framing),物理层单位是比特,就是0和1。



中间设备

    从一般的概念讲,讲网络互联起来要使用一些中间设备,物理层使用的中间设备叫做转发器(repeater),数据链路层使用的中间设备叫做网桥或桥接器(bridge),网络层使用的中间设备叫做路由器(router),网络层以上使用的中间设备叫做网关(gateway)。


物理层

     接下来简单介绍一下物理层,首先需要明白的是物理层不是指具体的物理设备或者信号传输的物理媒体,而是指在物理媒体之上为上一层(链路层)提供一个传输原始比特流的物理连接。这一层实现的硬件是集线器(hub),它对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

      


数据链路层

    数据链路层协议有许多种,但是有三个基本问题则是共同的,这三个问题就是:封装成帧、透明传输、差错检测。关于差错控制,比特在传输过程中可能0变1,1变0,这叫做比特差错,数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)。数据链路层使用两种信道:点对点信道和广播信道,点对点协议PPP(point-to-point protocol)则是点对点信道常用的协议,也是该层最广泛的协议,工作在该层的硬件是网桥。


网络层

    第三层是网络层,网络层向上层提供的是无连接的数据报服务,数据报服务的可靠通信应该由用户主机来保证、连接的建立可以不需要、每个分组都有终点的完整地址、分组独立选择路由进行转发,当结点出故障时,故障结点可能会丢失分组,一些路由可能会发生改变,到达终点不一定按发送顺序,端到端的差错控制和流量控制由用户主机负责。网络层不提供服务质量的承诺,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。如果主机中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等),IP协议是该层的核心协议,IP协议的主要功能就是无连接的数据报传输、数据报路由选择和差错控制。


传输层

    第四层是传输层,它属于面向通信的最高层,同时也是用户功能中的最底层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。网络层是为主机之间提供逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信。端口是应用层各协议进程与运输实体进行层间交互的一种地址,传输层的端口号分为两大类,一是服务器使用的端口号,这里又分两类,熟知端口号,也叫系统端口号,数值为0~1023,例如FTP(21)、HTTP(80)、SMTP(25)等,另一种是登记端口号,数值在1024~49151;另一类是客户端使用的端口号,数值在49152~65535之间。

传输层有一个重要的功能是复用和分用,复用是指发送方不同的应用进程可以使用同一个传输层协议传送数据,而分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的进程。

    传输层有两个协议,面向连接的TCP和无连接的UDP。UDP是无连接的,使用尽最大努力交付,即不可靠交付,UDP是面向报文的,UDP没有拥塞控制,因此网络出现的拥塞不会使源主机发送速率降低,UDP支持一对一、一对多、多对一、多对多的交互通信,UDP的首部开销小。TCP是面向连接的传输层协议,TCP连接只能是一对一的,它提供可靠的交付服务,也就是说,通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达,TCP提供全双工通信,TCP是面向字节流的,TCP把应用程序交下来的数据块看成无结构的字节流,TCP不保证接收方应用程序收到的数据块和发送方应用程序所发出的数据块具有对应的大小关系(例如,发送方应用程序交给发送方TCP共10个数据块,但接收方的TCP可能只用4个数据块就把收到的字节流交付给了上层的应用程序,但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样)。

     TCP连接的端点叫做套接字(socket)或插口,即(IP地址:端口号),每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

    TCP的运输连接有三个阶段,即连接建立、数据传送、连接释放。TCP连接建立的过程要使每一方能够确定对方的存在,主动发起连接建立的应用进行叫做客户(client),被动等待连接建立的应用进程叫做服务器(server),连接建立的过程叫做三次握手,假设A为客户,B为服务器,A发送一个报文给B,B发回确认,然后A再加以确认,来回共三次。

    

《计算机网络的五层协议体系》

    连接的释放需要发送四个包,因此成为四次挥手。客户端或服务器都可以主动发起挥手动作。

《计算机网络的五层协议体系》


应用层

    第五层是应用层,FTP(对应应用,文件传送)、HTTP(对应应用万维网)、TELNET(远程终端接入)、SMTP(电子邮件)使用的传输层协议都是TCP,DNS(名字转换)、TFTP(文件传送)、专用协议(IP电话、流式媒体通信)等使用的传输层协议都是UDP。

    以上就是计算机网络的五层协议。


推荐阅读
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • Python 领跑!2019年2月编程语言排名更新
    根据最新的编程语言流行指数(PYPL)排行榜,Python 在2019年2月的份额达到了26.42%,稳坐榜首位置。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
author-avatar
mobiledu2502873611
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有