接上一博客 网络基础(一)。
六、TCP/IP协议
负责传输的IP协议
按层次分,IP网际协议位于网络层,IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件,其中两个重要条件是IP地址 和Mac地址(Media Access Control Address)。
IP地址和Mac地址:指明了节点被分配到的地址,Mac地址是指网卡所属的固定地址,IP地址可以和Mac地址进行配对。IP地址可变换,但Mac地址基本不会更改。
TCP协议如何保持传输的可靠性
tcp提供一种面向连接的,可靠的字节流服务。
面向连接:一个客户和一个服务器在彼此交换数据前必须先建立一个TCP连接,并且只有两方进行彼此通信;
字节流服务:两个应用程序通过TCP连接交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符。
tcp可靠,因为以下原因:
- 数据包检验;
- 对失序数据包重排序;
- 丢弃重复数据;
- 应答机制;
- 超时重发;
- 流量控制。
TCP/IP通信传输流
发送端在层与层之间传输数据时,每经过一层必定会加上一个该层的首部信息。反之,接收端在层与层之间传输数据时,每经过一层会把相关的首部信息去掉。
七、TCP 三次握手和四次挥手
三次握手:
第一次握手: 建立连接时,向服务器发出连接请求报文,这是报文首部中的同部位 SYN = 1,同时选择一个初始序列号 seq = x ,客户端进程进入了 SYN-SENT (同步已发送状态)状态,等待服务器确认; 第二次握手: 服务器收到 syn 包后,如果同意连接,则发出确认报文; 确认报文 ACK = 1,SYN = 1,确认号是 ack = x + 1,同时也要为自己初始化一个序列号 seq = y,此时服务器进程进入了 SYN-RCVD(同步收到)状态; 第三次握手: 客户端收到服务器的 SYN+ACK 包,要向服务器给出确认。确认报文的 ACK = 1,ack = y + 1,自己的序列号 seq = x + 1,此时,TCP 连接建立,客户端进入 ESTABLISHED (已建立连接)状态。
建立一个连接需要三次握手,而终止一个连接要经过四次挥手。这是由于TCP的半关闭造成的。
四次挥手:
第一次挥手: 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部 FIN=1,其序列号为 seq = u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入 FIN-WAIT-1(终止等待1)状态。 第二次挥手: 服务器收到连接释放报文,发出确认报文,ACK = 1,ack = u + 1,并且带上自己的序列号 seq = v,此时,服务端就进入了 CLOSE-WAIT(关闭等待)状态。
第三次挥手: 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN = 1,ack = u + 1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为 seq = w,此时,服务器就进入了 LAST-ACK(最后确认)状态,等待客户端的确认。
第四次挥手: 客户端收到服务器的连接释放报文后,必须发出确认,ACK = 1,ack = w + 1,而自己的序列号是 seq = u + 1,此时,客户端就进入了 TIME-WAIT(时间等待)状态。
八、DNS域名解析
解析步骤:
查找域名对应的IP地址的具体过程
- 浏览器搜索自己的DNS缓存,如果没有命中,进入下一步;
- 搜索操作系统的DNS缓存,如果没有命中,进入下一步;
- 搜索操作系统的hosts文件,如果没有命中,进入下一步;
- 操作系统将域名发送至 LDNS (本地区域名服务器),LDNS 查询自己的 DNS 缓存(一般命中率在 80% 左右),查找成功则返回结果,失败则发起一个迭代 DNS 解析请求:
- LDNS向 Root Name Server(根域名服务器,如com、net、im 等的顶级域名服务器的地址)发起请求,此处,Root Name Server 返回 im 域的顶级域名服务器的地址;
- LDNS 向 im 域的顶级域名服务器发起请求,返回 juejin.im 域名服务器地址;
- LDNS 向 juejin.im 域名服务器发起请求,得到 juejin.im 的 IP 地址;
- LDNS 将得到的 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来。
九、正向代理和反向代理
正向代理:
- 代理客户;
- 隐藏真实的客户,为客户端收发请求,使真实客户端对服务器不可见;
- 一个局域网内的所有用户可能被一台服务器做了正向代理,由该台服务器负责http请求;
- 意味着同服务器做通信的是正向代理服务器。
反向代理:
- 代理服务器;
- 隐藏真实的服务器,为服务器收发请求,使真实服务器对客户不可见;
- 负载均衡服务器,将用户的请求分发到空闲的服务器上;
- 意味着用户和负载均衡服务器直接通信,即用户解析服务器域名时得到的是负载均衡服务器的IP。
共同点:
- 都是做为服务器和客户端的中间层;
- 都可以加强内网的安全性,阻止web攻击;
- 都可以做缓存机制。
十、CDN
CDN(Content Delivery Network),即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。
CDN优势:
- CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
- 大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻源站的负载。
CDN 的核心点有两个: 一个是缓存,一个是回源。
CDN关键技术:
- 内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;
- 内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程 POP 上均衡用户的请求,以使用户请求得到最近内容源的响应;
- 内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;
- 性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。
end !