目录
1. 网络发展史
2. 网络通信基础
1.1 IP地址
1.2 端口号
1.3 协议
1.3.1 概念
1.3.2 五元组
1.4 协议分层
1.4.1 协议分层的优点
1.4.2 协议分层的分类
1.4.3网络设备所在分层
1.4.4 两台主机通过TCP/IP协议通讯过程
1.5 封装与分用
1.5.1 封装
1.5.2 分用
(1)单机:计算机之间相互独立;
(2)局域互联网LAN:将多台电脑通过路由器、集线器、交换机等进行连接构成局域互联网;
组件局域网的方式:
① 网线直连; ② 基于交换器组建; ③ 基于集线器组建; ④ 基于交换机和路由器组建;
(3)广域互联网WAN:使用路由器连接多个局域网形成大范围网络,形成广域网;
(局域网与广域网之间没有明确的界限)
注:组件网络涉及到的重要设备:
① 集线器:一根网线分两路,但同一时刻只同一条,比较古早,现今不常见;
② 交换机:组件局域网(不能跨局域网),可以用于扩展路由器的端口,而今带有路由功能的交换机也较常见,故而交换机与路由器的界限也越来越模糊;
③ 路由器:将两个局域网进行连接(跨局域网),一般家用路由器常见是5个网口:I个WAN+4个LAN,其中WAN口用于连接上级路由器;
网络互联的目的是进行网络通信,即网络数据传输;
1. 在组建的网络中,主机用于输出或是接收数据根据IP地址进行标识,标识了网络设备所在的位置,
即:IP地址用于定位主机的网络地址,唯一标识一个主机;
2. 在计算机中,使用一个32位、4字节数字表示地址,一般会把IP地址表示成4个0~255之间的十进制数字,并且用3个点进行分割,这种表示方法称为点分十进制表示法。
1. 网络通信时,端口号可以标识主机中发送、接收数据的进程,标识了一个具体的应用程序;
即:端口号用于定位主机中的进程;
2. 端口号也是一个整数,大小为2字节,相对IP地址,是一个比较小的数字,范围是0~65535。
3. 不同的程序可以关联/绑定到不同的端口号,要求同一个主机上的应用程序不能关联到同一个端口号。一个端口号只能被一个程序绑定,但一个程序可以绑定多个端口;
如:mysql服务器绑定了3306端口,与此同时mysql还可以绑定其他的端口,但其他的程序就不能绑定3306端口了。
4. 端口号的分类:
第1类:熟知端口号:1~1023,留给一些较常见的服务器程序进行使用的,如:DNS:53端口,HTTP:80端口;
第2类:登记/注册端口号:1024~49151,使用这类端口号必须在IANA登记;
第3类:临时端口(短暂端口号):49152~65535,仅在客户进程运行时才动态选择,通信结束后则端口号收回。
协议是网络协议的简称,网络协议是网络通信经过的所有网络设备都必须遵从的一组约定、规则;
在TCP/IP协议中,一次通信涉及到五元组,即:
源IP,源端口,目的IP,目的端口,协议类型;
基于复杂的网络编程,如果协议过于复杂会导致学习成本、维护成本等都非常高,故而实际情况是复杂的大协议被拆分成若干个相对简单的小协议,令每个协议负责一部分功能,某些协议之间的功能与作用是类似的,故而针对小协议再进行分层,类似于代码中功能类似的类在同一包中;
① 如甲乙用汉语使用电话机打电话时,协议就被分为语言层汉语协议与通信设备层电话机协议,两个协议之间没有必须相互熟知底层原理的必要,类似于封装,降低了学习和维护的成本;
② 如甲乙现用英文或使用无线电话打电话,同时可以灵活地针对某一层协议进行替换;
当前互联网的协议分层主要有两种风格:
第一种: OSI 七层网络模型:实际不存在,教科书用于教学;
第二种: TCP/IP 五层(四层)网络模型:实际存在的,是OSI七层模型的简化版本;
物理层:约定网络通信中基础的硬件设备种类,如通信使用的网线、网口等等;
数据链路层:负责相邻两个结点如何进行传输;
网络层:负责路径的规划;
传输层:负责设备之间的数据传输,即端到端之间的传输,关注起点和终点;
应用层:描述应用程序如何使用数据,可以使用现有协议,也可由程序员自行编写,是程序员最需要关注的一点;
注:(1)主机是五层转发,路由器是三层转发(需解析出IP协议),交换机是二层转发(只需关注下一步发展到哪个相邻的设备上);
(2)基于协议分层的网络数据传输的基础五元组:
(3)应用层协议往往是根据具体的场景与需要,由程序员自主决定的;
源IP、源端口、目的IP、目的端口、协议类型;
1. 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,即TCP/IP的全5层;
2. 对于一台路由器,它实现了从网络层到物理层,即TCP/IP五层的下3层;
3. 对于一台交换机,它实现了从数据链路层到物理层,即TCP/IP五层的下2层;
4. 对于一台集线器,它只实现了物理层;
注:(1)交换机的作用是对路由器的端口进行拓展。
注:(1)通信双方的协议必须一致,否则通信无法正常进行;
(2)发送方进行封装,接收方进行分用;
1. 不同的协议层的数据报有不同的称谓:在传输层叫做段,在网络层叫做数据报,在链路层叫做帧;
2. 每层协议层增加或剥离的首部信息中包含了一些类似于首部长度、载荷长度以及上层协议名称等信息;
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装:
数据封装成帧后发送到传输介质上,到达目的主机后每层协议剥离相应首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理: