带着渴望学习,回头尽是青春
一、什么是网络协议?
计算机网络是由多个互联的点组成,节点之间需要通过某种协议来不断地交换数据和控制信息,这种协议规则明确规定了所交换的数据格式和时序,以及发送或接收时采取的动作等,这些为进行网络中的数据交换而建立的规则,标准或约定称为网络协议。
二、计算机网络体系结构
我们假设这样一个场景,你的团队或小组需要做一件比较复杂的事情,这件事情流程较多较繁琐,而你的小组人也很多,此时应该对这件事情如何下手呢? 我们可以把要做的事情看作一个系统,当我们在处理、设计该系统时将其划分为多个小模块或者子系统,这样的话分工明确,每个人只需要把注意力集中在自己特定的某部分去处理它,这就是模块化思想。计算机网络是一个非常复杂的系统,利用模块化思想非常适合处理计算机网络,将其划分为不同的体系结构。 在计算机网络中把计算机的层次结构模型和各层协议的集合称为计算机网络的体系结构。也就是说:计算机网络的体系结构就是这个计算机网络及其部件所应完成功能的精确定义,体系结构是抽象的,实现过程却很具体,是真正在运行的计算机硬件和软件。 按照层次结构设计计算机网络的体系结构有很多优点:
- 各层之间相互独立:每一层只需要直到自己该完成什么就可以。也就是说你只需要做好你在小组内的分工就可以了;
- 灵活性好:当任何一层发生变化,只要层层之间的接口不变,就不会影响其他层;
- 结构上可以分隔开;
- 易于实现和维护;
- 有利于功能复用:下一层可以为多个不同的上层服务;
对计算机网络的分层和体系结构的功能仁者见仁,智者见智。目前大众所熟知的体系结构有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、应用层
如何通过应用进程间的交互来完成特定的网络应用。应用层协议定义的是应用进程间的通信和交互规则。不同的网络有不同的协议:
端口号 | 名称 | 说明 |
---|
20 | ftp-data | FTP数据端口 | 21 | ftp | 文件传输协议(FTP)控制端口 | 22 | ssh | 安全shell(SSH)远程登陆 | 23 | telnet | telnet远程登陆服务 | 25 | smtp | 简单邮件传输协议SMTP | 53 | dns | 域名服务 | 69 | tftp | 简单文件传输协议 | 80 | http | 用于万维网(WWW)服务的超文本传输协议(HTTP) | 123 | ntp | 网络时间协议 | 161/162 | snmp | 简单网络管理协议 | 443 | https | 安全超文本传输协议 | 1433 | mysql | mysql数据库服务程序默认端口 | 8080 | tomcat | Java服务器程序默认端口 |
端口号是固定好的,端口号的范围是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.0 | 1.0.0.0-127.255.255.255 | 192.0.0.0-223.255.255.255 | 127.X.X.X是保留地址,用作循环测试 | 2^24-2=16777214 | B类地址 | 128.0.0.0-191.255.0.0 | 128.0.0.0-191.255.255.255 | 172.31.255.255 | 169.254.X.X是保留地址,191.255.255.255是广播地址 | 2^16-2=65534 | C类地址 | 192.0.0.0-223.255.255.0 | 192.0.0.0-223.255.255.255 | 192.168.255.255 | | 2^8-2=254 |
4、数据链路层
计算机网络是由主机、路由器和连接他们的链路组成,从源主机发送到目的主机的分组必须在一段一段的链路上传送,数据链路层的任务就是将分组从链路的一段传送到另一端,我们将数据链路层传送的数据单元称为“帧”,帧里面不仅有数据,还包含一些控制信息: 控制信息使得接收端能够知道一个帧从哪个比特开始到那个比特结束,也可以用于接收端检测所受到的帧中有没有错误信息。 数据链路层的任务就是在相邻结点之间的链路上传送以帧为单位的数据。
5、物理层
物理层是计算机体系结构中的最底层 完成计算机中最基础的任务,就是在传输媒体上传送比特流,把数据链路层中帧的每个比特从一个结点通过传输媒体传送到下一个结点,物理层传送单位是比特。
四、总结
在计算机系统中任何可发送或接收信息的硬件或软件进程称为实体,而协议是控制两个对等实体进行通信的规则的集合,,在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,要实现本层协议,还需要使用下面所提供的服务。协议在实体中是透明的也就是说协议是一个实际存在但是看起来却好像不存在一样的物质。TCP/IP协议可以为各式各样的应用提供服务,也能允许IP在各种不同的网络构成的互联网上运行。
|