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

计算机网络体系结构——TCP/IP五层协议

带着渴望学习,回头尽是青春一、什么是网络协议?计算机网络是由多个互联的点组成,节点之间需要通过某种协议来不断地交换数据和控制信息&#x

带着渴望学习,回头尽是青春


一、什么是网络协议?

计算机网络是由多个互联的点组成,节点之间需要通过某种协议来不断地交换数据和控制信息,这种协议规则明确规定了所交换的数据格式和时序,以及发送或接收时采取的动作等,这些为进行网络中的数据交换而建立的规则,标准或约定称为网络协议。


二、计算机网络体系结构

我们假设这样一个场景,你的团队或小组需要做一件比较复杂的事情,这件事情流程较多较繁琐,而你的小组人也很多,此时应该对这件事情如何下手呢?
我们可以把要做的事情看作一个系统,当我们在处理、设计该系统时将其划分为多个小模块或者子系统,这样的话分工明确,每个人只需要把注意力集中在自己特定的某部分去处理它,这就是模块化思想。计算机网络是一个非常复杂的系统,利用模块化思想非常适合处理计算机网络,将其划分为不同的体系结构。
在计算机网络中把计算机的层次结构模型和各层协议的集合称为计算机网络的体系结构。也就是说:计算机网络的体系结构就是这个计算机网络及其部件所应完成功能的精确定义,体系结构是抽象的,实现过程却很具体,是真正在运行的计算机硬件和软件。
按照层次结构设计计算机网络的体系结构有很多优点:


  • 各层之间相互独立:每一层只需要直到自己该完成什么就可以。也就是说你只需要做好你在小组内的分工就可以了;
  • 灵活性好:当任何一层发生变化,只要层层之间的接口不变,就不会影响其他层;
  • 结构上可以分隔开;
  • 易于实现和维护;
  • 有利于功能复用:下一层可以为多个不同的上层服务;

对计算机网络的分层和体系结构的功能仁者见仁,智者见智。目前大众所熟知的体系结构有OSI(Open Systems Interconnection开放系统互联)参考模型、TCP/IP参考模型。由于因特网的问世开始大面积覆盖世界相当大的范围,使得TCP/IP协议得到广泛应用,而法律标准上的OSI并没有能够占领市场,
OSI具有七层协议,理论比较完整,但是比较负责且不实用:请添加图片描述
数据在网络中的传输实际上就是封装和解封装的过程,发送方通过封装处理把数据转换成比特流的形式,比特流在新海传输的硬件媒介中传输至接收方,接收方把比特流进行解封装处理。功能:
1、物理层:规定了如何为网络通信实现最底层的物理连接,以及物理设备的机械,电气,功能和过程特性;
2、数据链路层:规定了如何进行物理地址寻址,如何在物理线路上进行数据的可靠传递以及流量控制;
3、网络层:规定了通过哪些节点,什么样的网络路径来将数据从发送方发送到接收方;
4、传输层:负责总体的数据传输和数据控制,提供端到端的交换数据的机制;
5、会话层:在网络的两个结点之间建立、维持和终止通信;
6、表示层:在应用程序和网络之间地数据进行格式化,使之能够被另一方理解;
7、应用层:为应用程序提供网络服务。


三、TCP/IP协议:

但由于OSI定义的太过复杂而错过了时间节点,让TCP/IP协议成为了计算机网络通信的事实标准。
在今天的基于TCP/IP的互联网诞生之前,能够使用接口通信处理实现互联互通的电脑并不多,而且大部分电脑之间信息的交换并不兼容。后来在1974年12月,Bob Kahn和Vinton G.Cerf带领的团队首先制定出了通过详细定义的TCP/IP协议标准。当时作了一个试验,将信息包通过点对点的卫星网络,再通过陆地电缆,再通过卫星网络,再由地面传输,贯串欧洲和美国,经过各种电脑系统,全程9.4万公里竟然没有丢失一个数据位,远距离的可靠数据传输证明了TCP/IP协议的成功。1983年1月1日,运行较长时期曾被人们习惯了的NCP被停止使用,TCP/IP协议作为因特网上所有主机间的共同协议,从此以后被作为一种必须遵守的规则被肯定和应用。
“TCP/IP”是很多协议很多协议组成的一个协议集合。我们把这集合统称为TCP/IP协议族,简称为TCP/IP协议。
对于TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层。通过下图我们可以了解TCP/IP协议结构并对比了解学习TCP/IP 四层参考模型和OSI七层参考模型,因为TCP/IP太过简单,我们也会使用模型化的TCP/IP五层模型来描述计算机网络。
请添加图片描述
请添加图片描述


1、应用层

如何通过应用进程间的交互来完成特定的网络应用。应用层协议定义的是应用进程间的通信和交互规则。不同的网络有不同的协议:


端口号名称说明
20ftp-dataFTP数据端口
21ftp文件传输协议(FTP)控制端口
22ssh安全shell(SSH)远程登陆
23telnettelnet远程登陆服务
25smtp简单邮件传输协议SMTP
53dns域名服务
69tftp简单文件传输协议
80http用于万维网(WWW)服务的超文本传输协议(HTTP)
123ntp网络时间协议
161/162snmp简单网络管理协议
443https安全超文本传输协议
1433mysqlmysql数据库服务程序默认端口
8080tomcatJava服务器程序默认端口

端口号是固定好的,端口号的范围是0~65535,其中1-1024是被规定好的端口,监听该范围端口的程序必须以root权限运行。从1025-65535端口被称为动态端口,可用来建立与其他主机的会话,也可以由用户自定义用途,所以在写服务器程序时,一般使用该范围内的端口应尽量避免一些知名的端口或当前系统正在使用的端口,具体怎么直到当前主机上运行了那些服务器程序并监听了哪些端口可以用sudo netstat -tlnp命令查看。


2、传输层

像两台主机中进程之间的通信提供通用的数据传输服务,起始各层的协议都是直接或间接的服务于主机与主机之间的通信,传输层就是进程与进程之间互相通信的协议,目前被人们所熟知的两个重要协议:


2.1、TCP(传输控制)协议

:提供面向连接的可靠的数据传输,传输单位为报文段(segment),


  • TCP是点对点的连接,一条TCP连接只能连接两个端点;
  • TCP需要进行“三次握手”建立连接,通信结束后要使用“四次挥手”断开连接;
  • TCP提供可靠传输,无差错,不丢失,不重复,按顺序传输,但是其开销较大,传输速度较慢;
  • TCP提供全双工通信,允许通信双方任何时候都能发送数据,发送方设有发送缓存,接收方设有接收缓存。
    关于**“TCP/IP协议三路握手、四次挥手”**请查看博客:TCP/IP协议——三路握手、四路挥手

2.2、UDP(用户数据报)协议

提供面向无连接的、不可靠不稳定的数据传输,


  • UDP是无连接的,发送数据之前不需要接力连接,减少了开销和延时;
  • UDP是面向报文的,对IP数据报只做简单封装,(8字节UDP报头)减少包头开销;
  • UDP没有阻塞机制,宁愿阻塞时丢弃数据不传也不阻塞造成延时;
  • UDP支持一对一、一对多、多对一、多对多通信。

3、网络层

网络层最需要的协议就是IP协议,在TCP/IP协议族中,所有的协议数据都依附于IP数据包格式传输,IP协议提供不可靠、无连接的数据传输服务,就是说IP协议不能保证数据能否成功到达目的地,只提供传输服务,传输出错的可能性较大,无连接是指IP协议对数据包的处理是独立的。这意味着接收方不一定会按照发送顺序接收数据包:
在这里插入图片描述
IP地址版本
常见的IP地址目前有IPv4和IPv6两个版本,当前广泛应用的是IPv4,但是IPv4已经几乎被消耗殆尽,下一阶段可能会进行版本升级至IPv6,一般情况下我们所使用的是IP v4:
在这里插入图片描述
IP地址对应于TCP/IP协议的网络层,是TCP、IP协议中很重要的一层协议
IP地址分类:
A类地址网络号占1个字节主机号占3个字节
B类地址网络号占2个字节主机号占2个字节
C类地址网络号占3个字节主机号占1个字节
D类地址是组播地址
E类地址是实验地址(保留)
在这里插入图片描述


地址分类网络号范围IP地址范围私有地址范围保留地址可容纳主机号容量
A类地址1.0.0.0-127.0.0.01.0.0.0-127.255.255.255192.0.0.0-223.255.255.255127.X.X.X是保留地址,用作循环测试2^24-2=16777214
B类地址128.0.0.0-191.255.0.0128.0.0.0-191.255.255.255172.31.255.255169.254.X.X是保留地址,191.255.255.255是广播地址2^16-2=65534
C类地址192.0.0.0-223.255.255.0192.0.0.0-223.255.255.255192.168.255.2552^8-2=254

在这里插入图片描述


4、数据链路层

计算机网络是由主机、路由器和连接他们的链路组成,从源主机发送到目的主机的分组必须在一段一段的链路上传送,数据链路层的任务就是将分组从链路的一段传送到另一端,我们将数据链路层传送的数据单元称为“帧”,帧里面不仅有数据,还包含一些控制信息:
控制信息使得接收端能够知道一个帧从哪个比特开始到那个比特结束,也可以用于接收端检测所受到的帧中有没有错误信息。
数据链路层的任务就是在相邻结点之间的链路上传送以帧为单位的数据。


5、物理层

物理层是计算机体系结构中的最底层
完成计算机中最基础的任务,就是在传输媒体上传送比特流,把数据链路层中帧的每个比特从一个结点通过传输媒体传送到下一个结点,物理层传送单位是比特。


四、总结

在计算机系统中任何可发送或接收信息的硬件或软件进程称为实体,而协议是控制两个对等实体进行通信的规则的集合,,在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,要实现本层协议,还需要使用下面所提供的服务。协议在实体中是透明的也就是说协议是一个实际存在但是看起来却好像不存在一样的物质。TCP/IP协议可以为各式各样的应用提供服务,也能允许IP在各种不同的网络构成的互联网上运行。


推荐阅读
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • CPAN(ComprehensivePerlArchiveNetwork)是internet上Perl模块最大的集散地,包含了现今公布的几 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • GSIOpenSSH PAM_USER 安全绕过漏洞
    漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • linux 禁止指定ip访问
    linux中如何禁止指定的ip访问呢?比如被别人暴力破解,被别人使用不同的密码尝试登录:所以我想直接禁用这些ip的访问.怎么办呢?解决方案:修改配置文件etchosts.deny把 ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
author-avatar
雷神鑫源义_341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有