计算机网络——网络原理初识
IP地址
1.概念
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址是用于定位主机的网络地址。
2.格式
IP地址本质是32位二进制代码,但32位的二进制代码不方便人们读取记忆。一般都是把这个32位的整数按照每个字节,分成四个部分,中间用 . 来分割。(称为“点分十进制”)
例如
转化后IP地址为128.4.5.6
3.特殊IP
127.* 通常是 127.0.0.1(回环IP,表示自己主机的IP)
端口号
1.概念
端口号可以标识主机中发送和接收数据的进程。简单说:端口号用于定位主机中的进程。
2.格式
端口号本质是2个字节(16位)的无符号整数,范围是
0~65535
注意事项:一个进程可以有多个端口号,但是进程与进程之间不能有相同的端口号!!!
协议
1.什么是协议
先问一个小问题:网络通信都是基于二进制0/1来传输,那怎么告诉对方发送的数据是什么呢?
协议就是来解决这个问题的。
协议
本质上就是约定,发出来的数据是啥样式的,接收方用什么方式来解析~
2.协议分层
网络通信的过程很复杂,有很多细节~
如果只通过一个协议来约定所有的细节,这个协议就会非常庞大,复杂~
更好的办法就是,把一个巨大的协议拆成很多小的,简单的协议,负责自己部分的工作~
这样做的好处:
1.每层协议不需要理解其它层协议的细节。(更好的做到了封装)
打电话的人,不需要理解手机的工作原理,就能完成打电话~
制造电话的人也不需要知道他们的客户打电话时说什么语言~
2.把对应层的协议换成其他的协议(更好的耦合)
打电话的人可以说中文也可以说英语~
五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
1.源IP:标识源主机
2.源端口号:标识源主机中该次通信发送数据的进程
3.目的IP:标识目的主机
4.目的端口:标识目的主机该词通信接收数据的进程
5.协议号:标识发送进程和接受进程双方约定的数据格式
五元组在网络通信中就类似发快递
可以在cmd中,输入nestat -ano
查看网络数据传输中的五元组信息。
OSI七层网络模型
OSI: 即Open System Interconnection,开放系统互联
OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。
TCP/IP五层模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
应用层:
负责应用程序间沟通
,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远
程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
传输层:负责两台主机之间的数据传输
。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
网络层:负责地址管理和路由选择
。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
数据链路层:负责设备之间的数据帧的传送和识别
。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
物理层:负责光/电信号的传递方式
。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
网络数据传输时,经过不同的网络节点(主机、路由器)时,网络分层需要对应。
以下为同一个网段内的两台主机进行文件传输:
两台计算机通过TCP/IP协议通讯的过程如下
TCP/IP
封装和复用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。
数据封装过程:
数据分用过程: