摘要
本章介绍了TCP/IP的四层结构;
DNS、TCP、IP协议;
TCP三次握手;
URI和URL;
未完待续额~
了解Web和网络基础
客户端(client)
通过发送请求从服务器处获取信息(资源)
在客户端和服务器端的一系列运作流程都是通过HTTP协议完成的
HTTP - HyperText Transfer Protocol 超文本传输协议
所谓的协议就是约定的规则
计算机和网络设备之间进行通信,双方必须约定相同的方法;例如何如检测到通信目标;哪一方先发起通信;如何结束通信等等;这种共同的规则就是协议(Protocol)
TCP/IP
为了理解HTTP,先了解一下TCP/IP,这是互联网里各种相关的规则的统称
因为通常使用的网络(互联网)都是在TCP/IP协议簇上运作的
HTTP是TCP/IP的一个子集
TCP/IP分层管理
TCP/IP协议族里重要的一点就是分层管理
从上到下依次分为应用层、传输层、网络层和数据链路层
分层的好处在于,设计更加灵活、方便,只要规定好各层的接口,不同的层可以完成不同的任务
应用层
应用层位于最上层,也是直接和用户接触的一层
TCP/IP协议族中关于应用层的各种应用服务,
如:FTP(File Transfer Protocol)、DNS(Domain Name System) 域名系统
HTTP协议即位于该层
传输层
应用层下一层是传输层
提供两台设备之间的数据传输
传输层中最重要的两个性质不同的协议
TCP - Transmission Control Protocol 传输控制协议
UDP - User Data Protocol 用户数据报协议
网络层
网络层是用来处理网络上流通的各种数据包
数据包就是网络传输的最小单位
该层主要作用就是处理传输的路线
在多台设备联通的时候,网路层的作用就是在众多选择中选一条路线进行传输
数据链路层
用来处理网络的硬件部分
例如:控制操作系统、驱动网卡,处理光纤等物理硬件
硬件理论上均处于数据链路层的范畴
传输过程
利用TCP/IP协议族进行数据传输的过程中,在发送端,数据从上向下走,在接收端,数据从下向上走
两台计算机之间通信
1、作为发送端的客户端在应用层发出请求
2、接着在传输层把收到的应用层数据进行分割,并在分割后的各个报文上打上标记和端口号之后转发给网络层
3、网络层寻找目的地,确定数据传输路线后转发给数据链路层
4、数据链路层将数据通过物理层(物理的电线光纤等)传输
4、接收端收到数据后,将数据向上传输,直至应用层(面向用户的)
发送端的数据每经历一层,都会打上该层所属的首部信息,一层一层封装
接收端收到数据后,每经过一层会逐层清除该层对应的首部信息
DNS、TCP、IP
整个TCP/IP协议族中与HTTP关系最为密切的三个协议
DNS
Domain Name System
域名解析服务,和HTTP位于应用层
主要是因为人类通常使用主机名或者域名去访问资源(方便、好记、有个性)
例如百度
;京东
对应的域名为www.baidu.com
;www.jd.com
但是计算机不认识这些域名,DNS的作用就是将域名和唯一的IP地址相映射
在命令行中输入ping www.baidu.com
可以得到对应的IP地址112.80.248.76
TCP
TCP位于传输层提供可靠的字节流服务
所谓的字节流服务(byte stream service)是指,为了提高传输效率,将整段信息分割成报文段(segment)为单位的数据包进行传输。
可靠的意思就是TCP能够确认是否将数据传输给对方,而没有丢失。
可靠性传输的实现(重要!)
三次握手
TCP将数据传输给对方后不会置之不理,而是一定会向对方确认是否将数据成功传送给对方
第一次握手:发送端首先将一个带有SYN标志的数据包传输给对方。
第二次握手:接收端收到后,回传一个带有SYN/ACK标志的数据包以示确认收到信息。
第三次握手:最后发送方再发一个带有ACK标志的数据包,表示握手结束。
这里的SYN和ACK都是TCP标识
若是在三次握手的过程中因为某种过程传输中断,TCP 会再次以相同的顺序发送相同的数据包
IP
这个IP指的是Internet Protocol,而不是IP地址
在传输中要利用IP地址和MAC地址
IP地址指的是节点地址,MAC地址是网卡所属的固定地址,两者相配对
多台设备之间互联时,不确定具体的传输情况,但是中转设备会自动进行路线选择,这种机制称为路由选择
URI和URL
URI(Uniform Resource Identifier)统一资源标识符
URL(Uniform Resource Locator)统一资源定位符
URI用字符串标识互联网资源,URL表示资源所处的低点(在互联网中的位置)
某种意义上,URL是URI的子集
绝对URI
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
http
协议
user:pass
登录信息
www.example.jp
服务器地址
也可以是IPV4地址,例如之前说的百度IP地址112.80.248.76
80
服务器端口号(若省略,则使用默认端口号)
/dir/index.html
带有层级的文件路径,可以指定服务器上的资源路径
uid=1
查询字符串,针对指定的路径,可以给查询字符串传参以查询特定资源
ch1
片段标识符