#根据自己看书总结所得,可能不够完全,当成小论文来写。

  客户端根据URL判断IP和端口,如果最近没有访问过该URL,通过DNS将域名解析为IP地址

  建立到服务器的TCP连接(著名的三次握手)

  先介绍下报文:

  HTTP要发送报文,会以流的形式通过打开的TCP连接传输,TCP层收到数据流后把数据切断封装在IP分组中,也就是传输层数据报,其中包括:IP头部[源IP地址,目的IP地址,长度,分组ID,校验和等]、TCP头部[源端口号,目的端口号、TCP段序号(用于数据排序)、校验和等]和TCP数据块

  

  报文的传送过程:

  1.应用程序将要发送的数据写入进程的内存地址;

  2.程序通过系统函数库接口做系统调用,系统内核将数据从用户内存取出放入内核缓冲区的内存地址空间,然后通知网卡控制器;

  3.网卡控制器根据网卡驱动信息得到内核缓冲区地址,将数据复制到网卡缓冲区;

  4.网卡中数据由字节单位转换为二进制,便于下一步电信号的传输,再将信号发送到线路;

  5.数据查询ip地址,如果在本地局域网,假设星型网络拓扑,通过自身所在局域网的路由器中转,转发到相应的服务器。

  6.绝大多数目标服务器不在本地局域网,通过本地局域网路由器转发,在经过寻址,中转的路由器,转发到IDC(Internet Data Center)控制的服务器所在局域网的路由器;

  7.数据在转到相应交换机的高速缓冲区,其中遵循存储转发机制

  8.由交换机发送到服务器

  9.服务器处理、查询,返回数据

  这里穿插一下传说中的网速,所有的交换节点都会存在一个概念,就是网卡带宽,用于限制从交换机流入路由器的转发队列的数据速度。

  假设一个交换机是100M网卡带宽,说明其传播数据速度可达到100Mbps,说得再白一点,就是每秒传播100Mb的数据。

  交换机同时有多个接口,处于数据链路层,通过自身记录学习到的每个端口对应的MAC地址查找连接到不同的端口的主机,这些主机共享交换机的带宽。如果10台主机,每个主机的数据发送速度理想下是每秒传播10Mb的数据。假设服务器有更大的网卡,但是速度如果受限在交接机,用处也是不大的,包括用户自身接入网络的带宽,也是同样的原理。网速当然受限于这里面最小的速度。

服务器会做什么?

可能会识别主机名用于访问控制或日志记录,不过一般不会这么做;

提供服务

对资源映射和访问


先写这么多,时间不足,慢慢补充。