代理、套接字、网卡接收
来自《网络是怎样连接的》
5.4 使用缓存服务器分担负载
缓存服务器是一台通过代理机制对数据进行缓存的服务器。代理介于Web服务器和客户端之间,具有对Web服务器访问进行中转的功能。
缓存服务器收到客户端请求后会以客户端的身份向目标Web服务器发送请求消息,从Web服务器看来缓存服务器就相当于客户端。
缓存服务器转发给客户端时会以Web服务器的身份向客户端发送响应消息。
这种在客户端和Web服务器之间充当中间人的方式就是代理的基本原理。
6.1.3 服务器端的套接字和端口号
socket建立连接的过程中,服务器等待连接的模块在程序启动时就已经在运行了,客户端的包还没来就调用accept接受连接,一旦客户端的包到达就会返回相应包并开始接受连接操作。接下来协议栈会给等待连接的套接字复制一个副本,然后将连接对象等控制信息写入新的套接字中。复制出新的套接字后,原来那个处于等待连接状态的套接字会以等待连接的状态继续存在,当再次调用accept,客户端连接包到达时,又可以再次执行接受连接操作。
既然通过客户端IP地址+端口号、服务器IP地址+端口号可以确定某个套接字,为什么要使用描述符?原因是套接字刚创建好,还没有建立连接的状态下信息是不全的,缺号客户端IP地址和端口号;并且描述符一种信息比较简单
6.2 服务器的接收操作
网卡将信号还原成数字信息后,根据包末尾的FCS校验错误,即通过计算与原本的进行比较,原本的FCS是由发送时的数字信息计算得到的。如果不一致可能是噪声导致了信号失真,信号产生了错误,接受包无效需要丢弃。
当FCS一致,接下来需要检查MAC头部的接收方MAC地址,查看是不是发给自己的,如果不是丢弃。
当网络包转交到协议栈,IP模块检查IP头部是否符合规范,然后检查接收方IP地址,查看是不是发给自己的。当服务器启用路由转发时,对于不是发给自己的包进行转发。
确认是发给自己的包后,检查包有没有发片。如果是分片的包暂时存放在内存中,等所有分片全部到达后重组还原成原始包;如果不是分片不需要重组。
协议号与端口号的区别,L3协议号,TCP06,UDP17;L4端口号,53DNS,67DHCP

浙公网安备 33010602011771号