所谓计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享硬件、软件、数据信息等资源。
计算机网络中实现通信必须有一些约定,这些预定被统称为通信协议。通信协议负责对传输速率、传输代码、代码结构、传输控制步骤、出错控制等制定处理标准。为了让两个节点之间能够进行对话,必须在他们之间建立通信工具,使得彼此之间能够进行信息交换。
通信协议通常由三部分组成:
ISO 于 1978 年提出“开放系统互连参考模型”,即著名的 OSI(Open System Interconnection),开放系统互连参考模型力求将网络简化,并以模块化的方式来设计网络。
开放系统互连参考模型把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层和应用层七层,受到计算机界和通信业的极大关注。通过十多年的发展和推进,OSI 模式已成为各种计算机网络结构的参考标准。
主要定义物理设备标准, 如网线的接口类型、各种传输介质的传输速率等. 主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输, 到达目的地后再转化为1、0, 也就是常说的数模与模数转换). 这一层的数据叫做比特(bit), 主要设备: 集线器、网线.
主要将从物理层接收的数据进行MAC地址的封装与解封装. 常把这一层的数据叫做帧, 主要设备: 网卡、交换机.
选择合适的网间路由和交换结点, 确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装, 称为IP协议. 常把这一层数据叫做数据包, 主要设备: 路由器.
定义了一些传输数据的协议和端口, 如TCP、UDP协议, 主要将从下层接收的数据进行分段和传输,到达目的地址后再进行重组, 以往把这一层数据叫做段.
通过传输层建立数据传输通路, 在系统之间发起会话或者接受会话请求(设备之间需要互相认识)
主要是进行对接收的数据进行解释、压缩与解压缩等,即把计算机能够识别的东西转化成人能够识别的东西(如图片、声音等)
主要是一些终端的应用, 比如说 FTP(各种文件下载)、浏览器、QQ等, 可以将其理解为在电脑屏幕上可以看到的东西, 也就是终端应用.
就如上面所说,OSI 只是一个参考模型,实际上我们现在更加常用的是 TCP/iIP
我们常常把 TCP/IP 协议挂在嘴边,实际上它并不是一个协议,而是一个网络通信模型,是一整个网络传输协议家族,通常被成为 TCP/IP 协议族,之所以叫这个名字,是因为该协议家族最早通过的两个协议标准,也是该家族的核心协议:
TCP/IP 提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化,它将软件通信过程抽象化为四层,采用堆栈的方式,分别实现出不同通信协议,所以通常被视为简化版的 OSI。
该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。 应用层是大多数普通与网络相关的程序为了通过网络与其他程序通信所使用的层。这个层的处理过程是应用特有的;数据从网络相关的程序以这种应用内部使用的格式进行传送,然后被编码成标准协议的格式。
每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用到两个传输层协议之一: 面向连接的TCP传输控制协议和无连接的包传输的UDP用户数据报文协议。 常用的应用层协议有:
运行在 TCP 协议上的协议:
运行在 UDP 协议上的协议:
其他:
提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。
传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。
负责相邻计算机之间的通信。其功能包括三方面。
网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
物理层是定义物理介质的各种特性:
常见的接口层协议有:
Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。
网际协议(英语:Internet Protocol,缩写为 IP),或称互联网协议,是用于报文交换网络的一种面向数据的协议。
IP是在TCP/IP协议中网络层的主要协议,任务是仅仅根据源主机和目的主机的地址传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。第一个架构的主要版本,现在称为IPv4,仍然是最主要的互联网协议,尽管世界各地正在积极部署IPv6。
数据在IP互联网中传送时会被封装为数据报文。IP协议的独特之处在于:在报文交换网络中主机在传输数据之前,无须与先前未曾通信过的目的主机预先创建好一条特定的“通路”。互联网协议提供了一种“不可靠的”数据包传输机制(也被称作“尽力而为”);也就是说,它不保证数据能准确的传输。数据包在到达的时候可能已经损坏,顺序错乱(与其它一起传送的报文相比),产生冗余包,或者全部丢失。如果应用需要保证可靠性,一般需要采取其他的方法,例如利用IP的上层协议控制。
IP 地址是 IP 协议提供的一种统一的地址格式,用于唯一地标识网络中的一个通信实体,就好比我们的门牌号。
IP 地址被分为 A、B、C、D、E 五大类,每个类别的网络标识和主机标识都各有规则:
类别 | 最大网络数 | IP 地址范围 | 最大主机数 | 私有 IP 地址范围 |
A | 162(2^7-2) | 0.0.0.0-127.255.255.255 | 16777214 | 10.0.0.0-10.255.255.255 |
B | 16384(2^14) | 128.0.0.0-191.255.255.255 | 65534 | 172.16.0.0-172.31.255.255 |
C | 2097152(2^21) | 192.0.0.0-223.255.255.255 | 254 | 192.168.0.0-192.168.255.255 |
IP 地址用于表示网络上的通信实体,但一个通信实体可以有多个应用程序同时提供网络服务,所以还需要使用端口来加以区分。
计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口。所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样。
端口号可以从 0~65535 ,通常将它分为如下三类:
可以在这个网站查看常用的端口:TCP/UDP端口列表
TCP是面向连接的通信协议,由于TCP是面向连接的所以只能用于端到端的通讯。通过三次握手建立连接,通讯完成时要拆除连接。
三次握手:
完成三次握手,客户端与服务器开始传送数据,
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。