一.网络通信基础
1.1 IP地址
IP地址主要用于标识网络设备的网络地址,是一个4个字节的数字,使用三个.分成四个部分,每个部分1个字节且表示的范围为0~255,例如127.0.0.1
1.2 端口号
端口号用于标识一个主机上的不同应用程序,每个程序在启动时,需要绑定一个与其他程序不重复的端口号,端口号是一个2个字节的整数,范围是0~65535。
1.3 协议
协议是网络通信经过的所有网络设备都必须共同遵从的一组约定。只有遵守这个约定,计算机之间才能相互通信交流。
1.4 协议分层
网络通信是一个非常复杂的事情,涉及到很多的细节问题,如果只用一个协议来约定所有细节,这个协议就会非常庞大且复杂,这就需要对协议进行拆分,同时为了避免将功能复杂的协议拆分成多个功能单一的协议后,协议过多不易管理的问题,就对协议进行了分层,把很多协议按照功能分成不同的层级,每个层级都有对应的目标,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。
协议分层的好处:1) 起到封装的效果(某一层协议,不需要知道其他层协议的细节,降低学习使用成本) 2) 任意层级的协议都是可以灵活替换的
1.5 TCP/IP五层模型
OSI模型较为复杂且不实用,这里主要介绍简化版本TCP/IP模型(真实世界采取的网络分层模型)
应用层:负责应用程序间沟通
传输层:负责两台主机之间的数据传输
网络层:负责地址管理和路由选择
数据链路层:负责设备之间的数据帧的传送和识别
物理层:负责光/电信号的传输方式
网络设备所在分层:(1) 主机→操作系统内核实现了从传输层到物理层的内容 (2) 路由器→实现了从网络层到物理层 (3) 交换机→实现了从数据链路层到物理层 (4)集线器→实现了物理层
1.6 封装和分用
协议的层和层之间通常通过封装和分用配合工作,那么什么是封装,什么是分用呢?首先我们来了解一下封装,封装的大致过程可以用下图表示
这个层层包装数据,不停的加数据报头的过程,就是封装,可以简单的理解为装快递时的过程,而分用,实际就是拆快递的过程,是封装的“逆过程”。
分用的大致过程如下:
1.物理层→收到一系列光电信号,把这些信号转成二进制数据,交给数据链路层
2.数据链路层→按照以太网协议,对数据进行解析,解析出来的载荷数据交给网络层
3.网络层→按照IP协议格式进一步解析,解析报头中的关键信息,取出载荷交给传输层
4.传输层→按照TCP/UDP格式进行解析,解析报头中的关键信息,把载荷交给对应的应用程序
5.应用层→对应程序获取到传输层解析出来的应用层数据包,按照程序自己的协议格式,对该数据包进行解析后执行对应操作
二.网络编程基础
2.1 发送端与接收端
发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。
接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。
收发端:发送端和接受端两端,简称为收发端。
2.2 请求和响应
当我们获取一个网络资源时,通常涉及到两次网络数据传输:
1.请求数据的发送 2.响应数据的发送
这个过程就像是在饭店中点餐,要先进行点餐(请求),饭店再根据需求上菜(响应)
2.3 客户端与服务端
服务端:在网络数据传输场景中,提供服务的一方进程,称为服务端
客户端:获取服务的一方进程,称为客户端