1.IP地址
IP地址主要用于标识网络主机或者其他网络设备(如路由器)的网络地址。简单来讲,IP地址用于定位主机的网络地址。我们可以理解成,IP地址用于表示主机在网络上的位置。
IP地址是一个32位的整数,大小是4个字节,通常用点分十进制来进行表示,如:“192.168.0.100”,这串数字就可以表示一个IP地址,每个数字中间使用“.”号进行分割,每个数字都是10进制的。相比与用二进制或者16进制来表示一个IP地址,点分十进制的表示方法让人更容易识别和区分IP地址。
2.端口号
一台主机上有很多的应用程序,当主机接收到网络传输的数据后,如何区分这些数据需要交给哪一个应用程序?这就需要根据端口号来区分。不同的应用程序,程序员会设置或者系统会自动分配端口号,再根据端口号,确定应该将数据交给哪个应用程序。
端口号通常占用两个字节,取值范围为0~65535。
3.网络协议
网路协议规定了参与网络通信的设备采用什么样的数据格式来进行通讯,都采用相同的格式的数据,才能够进行通讯,网络协议具体体现为传输数据包的格式。
4.网络协议分层
网络协议分层的意义在于能够更方便的进行扩展和维护,类似于写代码时实现低耦合的效果。定义好两层间的接口规范,一方为实现方,负责提供服务,另一方为调用方,负责使用服务。提供方利用封装的特性,隐藏了实现的细节,只提供服务的接口,而调用方不关心实现的细节,只需要调用接口。
OSI分层模型将以太网协议分为7层,分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。但是7层模型十分复杂,实际上组建网络通常采用5层模型,将会话层,表示层,应用层合并为应用层,分层的结果即:物理层,数据链路层,网络层,传输层,应用层。
- 物理层负责光电信号的传递;
- 数据链路层负责设备之间的数据帧的传送和识别;
- 网络层负责地址管理和路由选择;
- 传输层负责两台主机之间的数据传输;
- 应用层负责应用程序之间的沟通;
相邻的两层协议之间的关系:上层协议调用下层协议,下层协议为上层协议提供支持。
5.封装和分用
传输数据需要按照协议分层对用户数据进行封装和分用,每封装一层,都需要加上该层协议对应的报头,分装完成后发送数据,用户接收到数据后,需要对数据进行分用,每拆分一层,都需要去掉该层协议的报头。可以简单理解如下:
封装的过程:
分用的过程:
6.客户端和服务端
客户端指的是获取服务的一方,通常表现为主动发送请求数据,等待响应数据。
服务端指的是提供服务的一方,通常需要被动等待请求数据,根据请求计算响应数据,再将响应传回给发送请求的主机。
如下图: