1. TCP/IP 协议
我们通常使用的网络都是在 TCP/IP 协议的基础上运作的。
TCP/IP 是互联网相关的各类协议族的总称。
常见的互联网相关协议有 TCP、IP、HTTP、FTP、UDP 等等。
2. 网络分层
TCP/IP 四层模型,将网络从下至上分为数据链路层(Data Link)、传输层(Transport)、网络层(Network)、应用层(Application)。
ISO 提出的 OSI(Open System Interconnection)模型将网络分为七层,即物理层( Physical )、数据链路层(Data Link)、网络层(Network)、传输层(Transport)、会话层(Session)、表示层(Presentation)和应用层(Application)。
关于 TCP/IP 4 层和 5 层两种不同的说法,解释如下
TCP/IP 是事实标准,分 4 层。OSI 模型是国际标准,分 7 层。一般把他们综合起来讲,就说是 5 层。只是把网络接口层分开为数据链路层和物理层 2 层了。
3. 网络传输的过程
以 HTTP 举例,传输顺序为客户端的应用层 -> 传输层 -> 网络层 -> 链路层,服务器在链路层接收到数据,再向上层发送,从链路层 -> 网络层 -> 传输层 -> 应用层。
TCP/IP 模型网络通信图在数据传输的过程中,从上层向下层传输的过程中,每经过一层就会被封装(encapsulate)上该层所属的首部信息。相反,从下层向上层传输的过程,则没经过一层就把对应的首部去掉。
传输过程中的封装过程 另一张封装过程图4. IP 协议
IP(Internet Protocol)网际协议位于网络层。“IP” 在这里是一种协议的名称,IP 协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做 “IP 地址”。
IP 协议的作用是把各种数据包传送给另外一个接收对象。而要确定数据包传送到哪里,需要两样东西,分别是 IP 地址和 MAC 地址(Media Access Control Address)。
MAC(Media Access Control,介质访问控制)地址,也叫硬件地址,长度是48比特(6字节),由16进制的数字组成,分为前24位和后24位:
前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。
MAC地址对应于OSI参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,交换机根据收到的数据帧中的“目的MAC地址”字段来转发数据帧。
简单来说,MAC 地址就是每一张网卡的身份证号,具有全球唯一性(说是这么说,不过好像还是有重复的情况,不知道厂商要怎么确保每一张网卡的 MAC 地址不相同),网卡的物理地址通常是由网卡生产厂家烧入网卡的 EPROM(通常可以通过程序擦写来进行修改)。
5. ARP 协议
ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。
在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址(MAC 地址),所以需要一个从IP地址到物理地址的映射。APR就是实现这个功能的协议。
IP 地址转 MAC 地址的工作的流程如下:
- 主机 A 先在本地的 ARP 缓存(一张 IP 和 MAC 的对应表)中查找是否存在对应 IP 地址的记录,如果存在,直接取到对应 IP 的 MAC 地址。
- 如果主机 A 在 ARP 缓存中没有找到对应记录,就会向本地络中的所有主机发起广播询问,本地网络上的每台主机都接收到 ARP 请求并且检查是否与自己的 IP 地址匹配。如果主机发现请求的 IP 地址与自己的 IP 地址不匹配,它就不会有任何回应。
- 主机 B 确定 ARP 请求中的 IP 地址与自己的 IP 地址匹配,则将主机 A 的 IP 地址和 MAC 地址对应记录添加到本地 ARP 缓存中。
- 主机 B 将包含其 MAC 地址的 ARP 回复消息直接发送回主机 A。
- 当主机 A 收到从主机 B 发来的 ARP 回复的消息时,会向本地的 ARP 缓存中添加主机 B 的 IP 地址与 MAC 地址的对应记录。主机 B 的 MAC 地址确定后,主机 A 就能与主机 B 进行通信了。
ARP 欺骗攻击
ARP 请求为广播形式发送的,网络上的主机都可以接收到,也可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪 ARP 应答报文,从而篡改本地的MAC地址表。ARP 欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
举个栗子来说明 ARP 欺骗:网络中有三台设备,路由器(网关)、主机 A、主机 B,现在主机 A 要访问一个网站,因为处于局域网(内网)之中,访问外网需要经过路由器(网关)来中转,这时候主机 A 希望向网关(假设 IP 地址是 192.168.1.1)发送一些数据,但是主机 A 的本地的 ARP 映射表中不存在 192.168.1.1 这个 IP 地址对应的记录,于是它向整个局域网发送 ARP 广播。如果主机 B 是一个攻击者,它在接收到广播之后,可以主动向主机 B 发送“我的 IP 是 192.168.1.1,对应的 MAC 地址是 XX:XX:XX……”,主机 A 在没有验证信息是否真实的情况下,就将这条 IP 和 MAC 对应记录保存在了本地的 ARP 缓存中,然后向主机 B 发送请求数据,这时就会导致通信失败。如果主机 B 同时还负责重定向主机 A 的请求到真实的网关,那么主机 A 不会出现通信失败(网络请求失败),但是所有通信都会经过主机 B。
(ps:看到这里有一点感触,想起以前和别人共用网络,经常遭到 ARP 欺骗攻击,就是被人使用 p2p 终结者、聚生网管之类的软件进行限速和断网)
6. TCP 协议
TCP 位于传输层,提供可靠的字节流服务。
所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。
TCP 的三次握手
TCP 的两种标志(flag) —— SYN(synchronize) 和 ACK(acknowledgement)。
TCP 的三次握手客户端首先发送一个带 SYN 标志的数据包给对方。服务器收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,客户端再回传一个带 ACK 标志的数据包,代表“握手”结束。
TCP 的四次挥手
- 客户端向服务器端发送 FIN,表示数据传输完毕,不会再传输数据,但是服务器端有数据没有传输完,可以继续传输。
- 服务器返回 ACK 表示知道了,传输完数据会再发消息给客户端。
- 服务器继续传输未传完的数据。
- 服务器向客户端发送 FIN,表示数据已经传输完成,准备关闭连接了。
- 客户端向服务器发送 ACK,表示知道了,然后进入 TIME_WAIT 状态,以保证服务器成功接收到 ACK,等待时间过去则关闭连接。
- 服务器在收到客户端发来的 ACK 之后,关闭连接;如果没有收到,则告知客户端没有接收到确认信息,要求重发。
7. DNS 服务
我们在浏览网页的时候,通常需要输入网址,例如访问百度,我们就要输入 www.baidu.com 这个网址。上网其实就是我们的计算机和服务器进行数据交换的一个过程,我们需要知道服务器在网络上的位置——也就是 IP 地址,才可以与它连接,进行数据传输。那么计算机是怎么通过网址来获取到服务器的 IP 地址的呢?
我们可以通过 DNS 服务器来查询 IP 地址,在我们输入网址,敲下回车之后,操作系统会将网站域名发送到本地 DNS 服务器进行查询。(这里省略了查询本地 DNS 缓存的过程以及本地 DNS 服务器查询不到向根域名服务器发送解析过程的情况)
8. URI 和 URL
URI 是统一资源标识符 Uniform Resource Identifier 的缩写,URL 是统一资源定位符 Uniform Resource Locator 的缩写,它是一种具体的 URI,不仅标识了一种资源,同时还指明了如何去定位这个资源。
网友评论