读《网络是怎样连接的》第六章 总结

版权声明:阿欧,版权声明在哪? https://blog.csdn.net/a3765421/article/details/83988581

这章可以说是非常简单了,基本都是之前的东西.那么,我们开始吧.

第五章我们知道了数据包最终都是要到达web服务器的,不管是用了负载均衡技术还是缓存的技术, 其 让用户接收的的响应数据都是通过 web服务器产生的, 那么,我们这一章就聊聊 数据包到达了 web服务器发生了什么吧.

  • 服务器与客户端的区别
  • 复习以下如何接收包
  • web服务器如何形成响应数据
  • 浏览器得到了相应数据,如何生成显示内容

一. 服务器端与 客户端有什么区别呢?

嗯哈,很明显,性能就是巨大的区别 啊,,,但是,,我们先不关注这个,我们看看tcp连接 与 收发数据包 的层面,两者有什么区别.

tcp 连接层面:

在这个层面,  我们知道,  两端通讯, 首先各自都要生成表示 自身的 socket标识符.  (客户端的端口号按应用不同而设置,服务器端的端口号根据规则设定,如web服务器就设定80)

然后,客户端向服务器端发送SYN=1的tcp控制信号(还有像序号、窗口大小等东西)。

在客户端进行一系列骚操作之前, 服务器端 需要先监听连接, 发现有人在试图连接后,就把我们原先在服务器端建立的socket 标识符复制产生一个 新的套接字,然后把客户端发送过来的配置信息放进去(如,客户端的ip、端口、需要、窗口大小等),

 之后, 这个socket需要 给 客户端返回一个tcp控制信息 的响应,(ack=1 、 序号、窗口大小等高速客户端),然后客户端再返回一个确认响应就好了.

收发数据包:   

这个与客户端是完全一样的,   因为不管 服务器的硬件和操作系统如何变化 ,其网络服务的组件都是一样的,不然网络就太复杂了.

所以,服务器收发数据包 也是用的网卡.

二. 接收数据包

复习一下:

网卡里的MAC模块在    PHY把 网络中传输的信号转换成一般的 电信号后,  就进行了如下操作:

1.接收电信号, 并把电信号转换成数字信号( 利用报头中的时钟信号)

2.利用 FCS进行校验. (正确,则进行下一步,否则就丢弃该包)

3.检测MAC首部。的MAC接收地址是不是MAC 模块中的MAC地址,不是就丢掉, 是的话就放入 网卡的缓冲区中.

ok,接下去就看看谁在接力了:

在数据在缓冲区后, 中断程序告知cpu ,数据到了,你来取一下, cpu知道后,就中断当前的工作, 调用网卡驱动程序冲网卡的缓存中读数据, 并根据 MAC中的以太网类型判断协议种类,  把数据送给处理该协议的软件(如IP协议 就——》TCP/IP协议栈)

再之后呢?

ip 模块在接力:

1.看看 ip是不是发给自己的(不是就转发出去)

2.网路包是否经过分片(等所有分片全部到达后组装回原来的 原始包)

3.检测ip头部的协议字段(tcp就是06),那么就把包给TCP模块处理

不慌,TCP模块在操作:

1.根据收到的包的放松方IP和端口, 接收方的ip和端口, 在 套接字表中找到对应要通讯 的是 哪个套接字

2.将数据块拼合起来放在接收缓冲区中(检查发送的序号, 序号正确就把包放入缓冲区拼接起来)

3.返回ACK

这时,数据都存到了缓冲里面,接下来,应用程序会调用Socket.read() 把数据取走,然后分析数据,作出响应.

三. 如何形成响应

先不急着做响应, 我们起码得先看看请求的是什么,  如果是文本(html、、、),那么我们直接从文件中读取文档,然后将其作为响应消息返回就好了, 如果是CGI程序( 不太明白 ), 那么 我们就要运行这个程序,把必要的参数传给它,然后把程序运行结束产生的数据嵌入HTML文档 作为响应返回.

补: web服务器的访问控制

就是 我们访问的目录其实是假的,是虚拟目录,  在我们所看到的根目录之外其实还有其他目录存在,不过我们被限制了访问罢了.

三种 访问控制的规则:

1.客户端ip

2.客户端域名

3.用户名和密码

只有满足条件的客户端可以访问服务器的数据.

四. 浏览器如何显示内容

要显示内容,首先要看看响应消息中的数据属于哪种类型,web可以处理的类型包括 文本、图像、声音和视频等.每种类型的显示方式都不同,所以先确定数据的类型才行.

浏览器查看响应头, 响应头中有个存在  名为 Content-Type : text/html。 (左边为 主类型, 右边为 子类型)

ok,接下来我们看看具体如何显示内容:

对于图片文本这类的数据,浏览器可以自行显示:     浏览器解释标签的含义,按照指定的样式显示文档内容,实际的显示操作由操作系统完成, 浏览器负载对操作系统发出指令.

对于其他内容的数据(eg: ppt),浏览器会调用相应的程序来帮忙.  将数据传给帮忙的程序,然后改程序负责显示相应的内容.

嗯哈,这本书结束啦,虽然写博客挺花时间,但感觉还不错

✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️

猜你喜欢

转载自blog.csdn.net/a3765421/article/details/83988581
今日推荐