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

TCP/IP网络协议的分析(1)——总体思想

1.1什么是网络协议?两台计算机上的程序要交换数据,为保证数据可靠传输,必须要对数据进行中间处理,而协议就是这个处理过程的规定。这好像是两台计算机为进行通信而签订的协议。联系实际生

1.1 什么是网络协议?

两台计算机上的程序要交换数据,为保证数据可靠传输,必须要对数据进行中间处理,而协议就是这个处理过程的规定。这好像是两台计算机为进行通信而签订的协议。联系实际生活,计算机通信好比是我们收发快递,快递协议就是寄快递、送快递、收快递各个过程的规则条文。大家都按这个规则来收发快递,保证了快递的准确及时送达。

下面是官方说法,网络协议是由三个要素组成:


(1) 语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。

(2) 语法。语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。

(3) 时序。时序是对事件发生顺序的详细说明。(也可称为“同步”)。 

1.2 TCP/IP网络协议的构成

TCP/IP网络协议并不是一个孤立的协议,而是众多协议组成的协议簇。就好比我们委托快递公司有一套规则,快递公司内部包裹流转有一套规则,快递公司送给收件人也有一套规则,这些规则共同构成了快递协议。

根据TCP/IP协议的功能,可以将其划分成5个层次,这5个层次是逻辑关系上的分层。





TCP/IP协议的分层


分层组织的原则是:低层协议为相邻的上层协议提供服务(接口),是上层协议得以实现的基础。

①物理层:就是把电脑连接起来的物理手段,常见的有光纤、双绞线,以及无线电波,它决定了电信号(0和1)的传输方式,物理介质的不同决定了电信号的传输带宽、速率、传输距离以及抗干扰性等等,这一层的PHY协议规定了传输信号所需的物理电平、介质特征。

②链路层:规定了数据帧能被网卡接收的条件,发送方会在发送的数据帧的首部加上接收方网卡的 MAC 地址信息,接收方只有监听到属于自己的MAC 地址信息后,才会去接收并处理该数据。

③网络层:每台网络设备都应该有自己的网络地址, 网络层规定了主机的网络地址该如何定义, 以及如何在网络地址和 MAC 地址之间进行映射,即IP协议、ARP协议、路由协议。

④传输层:网络层实现了数据包在主机之间的传递,而一台主机内部可能运行着多个网络程序,传输层可以区分数据包是属于哪一个应用程序的,可以说传输层实现了数据包端到端的传递。另外,数据包在传输过程中可能会出现丢包、乱序和重复的现象,网络层并没有提供应对这些错误的机制,而传输层可以解决这些问题,这就是TCP协议,引入了三次对话机制的UDP协议;

⑤应用层:应用层以下的工作完成了数据从一个主机上的应用程序传输到另一台主机的应用程序,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差。因此,应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、MQTT等,之所以会有许多的应用层协议,是因为互联网中传递的数据种类很多、差异很大、应用场景十分多样。

1.3 TCP/IP通信数据(报文)的传输过程

下面简要介绍数据是怎样按照TCP/IP协议在以太网中进行接收和发送的。

下图直观的表示了数据在以太网上的传输过程:

发送端:
第一步——应用层操作:用户(应用程序)发送数据, 将数据向下交给传输层,应用层可以通过调用传输层的接口来编写特定的应用程序。

第二步——传输层操作:传输层会在数据前面加上传输层首部,即TCP首部,向下交给网络层。

第三步——网络层操作:网络层会在数据前面加上网络层首部(IP 首部),然后将数据向下交给链路层。

第四步——链路层操作:链路层会对数据进行最后一次封装,即在数据前面加上链路层首部,形成以太网数据包,然后将数据交给网卡。

第五步——物理层操作:网卡将数据转换成物理链路上的电平信号,数据就这样被发送到了网络线路中。

接收端:
当设备的网卡接收到某个数据包后, 它会将其放置在网卡的接收缓存中,并告知TCP/IP 内核。 然后 TCP/IP 内核就开始工作了,它会将数据包从接收缓存中取出,并逐层解析数据包中的协议首部信息,并最终将数据交给某个应用程序。

数据的发送过程,可以概括为TCP/IP 的各层协议对数据进行封装的过程;数据的接收过程与发送过程正好相反,可以概括为 TCP/IP 的各层协议对数据进行解析的过程。

网上有一个很形象的比喻:
网络通信就好比送快递,商品外面的一层层包裹就是各种协议,协议包含了商品信息、收货地址、收件人、联系方式等,然后还需要配送车、配送站、快递员,商品才能最终到达用户手中。一般情况下,快递是不能直达的,需要先转发到对应的配送站,然后由配送站再进行派件。配送车就是物理介质,配送站就是网关, 快递员就是路由器,收货地址就是IP地址,联系方式就是MAC地址。 快递员负责把包裹转发到各个配送站,配送站根据收获地址里的省市区,确认是否需要继续转发到其他配送站,当包裹到达了目标配送站以后,配送站再根据联系方式找到收件人进行派件。

 

 


推荐阅读
  • 本文深入探讨了MAC地址与IP地址绑定策略在网络安全中的应用及其潜在风险,同时提供了针对该策略的破解方法和相应的防御措施。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文将详细探讨 Linux 系统中的 netstat 命令,该命令用于查看网络状态和连接情况。通过了解 IP 地址和端口的基本概念,我们将更好地理解如何利用 netstat 命令来监控和管理网络服务。 ... [详细]
  • 本文深入探讨了网络编程中的基本概念,如指针、引用和可重入函数,并详细介绍了OSI七层模型和TCP/IP四层模型的功能与协议。同时,文章还对比了HTTP与HTTPS的区别,分析了HTTP请求报文的结构,讨论了TCP与UDP的主要差异,以及滑动窗口协议的工作原理。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • TCP/IP基础知识详解
    本文详细介绍了TCP/IP协议的基本概念,包括网络层次模型、TCP三次握手过程、四次挥手过程以及TCP与UDP的比较。通过这些内容,读者可以更好地理解TCP/IP协议的工作原理。 ... [详细]
  • 探讨GET与POST请求数据传输的最大容量
    在Web开发领域,GET和POST是最常见的两种数据传输方法。本文将深入探讨这两种请求方式在不同环境下的数据传输能力及其限制。 ... [详细]
  • 2023年PHP实现1GB视频上传的最佳实践
    本文将详细介绍如何使用PHP处理1GB大小的视频上传问题,包括文件类型验证、上传大小限制设置及优化上传过程,确保高效稳定地完成大文件上传。 ... [详细]
  • Linux环境下Redmine快速搭建指南
    本文将详细介绍如何在Linux操作系统中使用Bitnami Redmine安装包快速搭建Redmine项目管理平台,帮助读者轻松完成环境配置。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 使用C# .NET构建UDP点对点聊天应用
    本文详细介绍如何利用C# .NET框架开发一个基于UDP协议的点对点聊天程序,包括客户端与服务器之间的连接建立、数据传输等核心功能。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 本文详细记录了作者从7月份的提前批到9、10月份正式批的秋招经历,包括各公司的面试流程、技术问题及HR面的常见问题。通过这次秋招,作者深刻体会到了技术积累和面试准备的重要性。 ... [详细]
author-avatar
刺猬xiaojie
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有