1.1 网络
单机时代 ----------> 局域网时代 ----------> 广域网时代 -------------> 移动互联网时代
1、单机时代:即主机之间无法通信,只能访问自己电脑上的内容(只能玩一些单机游戏,扫雷,蜘蛛纸牌.....)
2、局域网时代:把几个主机通过网线(路由器)连接在一起,使其处于同一个网络下,电脑之间可以相互访问(可以玩一些小范围的网络游戏,红警,cs 1.6......)
3、广域网时代:把更多更多的局域网连在一起,使其组成一个更大的网络,可能是一个城市、一个国家或者全世界(可以和全球的人进行对战,英雄联盟,王者荣耀,csgo.......)
4、移动互联网时代:手机盛行,3G、4G、5G......(上网更加方便了)
1.2 IP地址
IP地址描述了一个设备在网络上的地址,使用32位(4字节)表示,一般来说,会把IP地址表示为4个0~255的之间数字,并用.分割,即点分十进制。
1.3 端口号
端口号用来区分一个主机上不同的应用程序。
IP地址和端口号通常成对出现,IP地址表示要与哪一台主机通信,找到主机之后,端口号用来表示与该主机的哪一个应用程序通信。
端口号用2个字节表示(0~65535),0一般不适用,1~1023这个范围的端口号,系统留作特殊用途,我们写的程序不应该占用这些端口号;注意:一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口号!!!
1.4 协议
1.4.1 初识协议
协议本身就是一种约定,约定了通信双方以什么样的通信方式来交换数据。
五元组规定了“谁”和“谁”通过什么样的“方式”进行通信。(网络通信必不可少!)
介绍具体的协议之前我们先聊一下协议分层:什么是协议分层呢?就是把相同或相似功能的协议放到同一层中,每一层只专注做自己擅长的事情,而不关注其他层的内容,并且约定了不同层之间的调用关系,上层调用下层提供的功能,下层为上层提供支持。协议分层还有一个好处是解耦合,每一层只要不变更上下层之间的接口(调用关系),无论它们内部的构造或者方法如何变更,都不会影响其它层的使用。
分层就类似于这样,各自做好自己的本职工作,做好了逐层向上汇报即可。
协议分层的好处:
1.4.2 具体协议介绍
协议常见的说法有两种:OSI七层网络模型(仅仅出现在教科书中);TCP/IP五层网络模型(生活中用到的都是这种)。
越往下,越接近硬件,越往上,越接近用户。
七层模型与五层模型的对比:
1、物理层:关注的是硬件的具体实现细节,例如电线的具体电气特性、物理特性等等,类似于铁路系统中公路、铁路的规模等等。
2、数据链路层:关注相邻结点的数据传输情况。
3、网络层:路径规划
4、传输层:关注起点和终点
举个例子:
我们从网络上买件衣服,商家只关注他的位置和我的位置,即快递的起点和终点(传输层),而不关注具体怎么送给我,只需要交给快递小哥就可以;快递小哥就需要考虑我该通过什么样的路径送这个包裹呢?怎么样更快呢?怎么样风险最小呢?武汉---->北京?武汉------>河南------->北京?还是武汉------->山西--------->北京呢?(网络层);考虑完路线之后,就要考虑相邻城市之间该怎么运输了,飞机?火车?汽车?电驴?自行车?步行?(数据链路层);顾客收到这个快递之后只需要考虑怎么使用它即可(应用层)。
1.4.3 经典的笔试题
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,即TCP/IP五层协议的下四层
对于一台路由器,它实现了从网络层到物理层,即TCP/IP五层协议的下三层
对于一台交换机,它实现了从数据链路层到物理层,即TCP/IP五层协议的下两层
对于一台集线器,它只实现了物理层
1.5 封装和分用
举个例子,我们通过QQ发送一个hello给好友,过程如下:
1、应用层:
在应用层我们可能会把要发送的数据封装成这样,然后发送给传输层。
2、传输层:
传输层收到数据之后,会将这段数据拼接上自己的报头,进行封装的过程,也就是给数据添加更多“辅助信息”的过程。
UDP/TCP报头中最主要的内容是源端口和目的端口号,封装好之后会接着发送给下一层,即网络层。
3、网络层:
IP报头中最主要的内容是源IP和目的IP,封装好之后会接着发送给数据链路层。
4、数据链路层:
数据链路层不仅会封装报头,同时还会封装一个尾部,数据链路层报头中最主要的内容是源mac地址和目的mac地址,封装完成后发送给物理层。
5、物理层:
物理层会把上面的数据变成用0、1表示的二进制数据,通过光信号/电信号进行传输。
分用是封装的逆过程,即一层一层的将刚才封装的报头全部拆掉,最终将简单的信息发到对方的应用层上。