个人技术分享

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表示的二进制数据,通过光信号/电信号进行传输。

分用是封装的逆过程,即一层一层的将刚才封装的报头全部拆掉,最终将简单的信息发到对方的应用层上。