0%

计算机网络相关

计算机网络

英特网协议栈

计算机网络五层网络模型:应用层、运输层、网络层、数据链路层、物理层。
七层ISO OSI参考模型:在应用层和运输层中多两层,表示层和会话层。

五层网络模型:

  • 应用层 http FTP DNS 数据称为报文
  • 运输层 TCP UDP协议 数据称为报文段
  • 网络层 IP协议和路由选择协议 数据报
  • 链路层 以太网 Wifi和电联接入网的DOCSIS协议
  • 物理层 双绞铜线 光纤

应用层

http

web的应用层是超文本传输协议(HyperText Transfer
Protocol,HTTP)

HTTP服务器不保存服关于客户的任何信息,所以http是一个无状态协议。

浏览器对同一个网站会建立多少tcp连接?

用户能够配置现代浏览器以控制并行度。在默认方式下,大部分浏览器打开5~10个并行的TCP连接,而每条连接处理一个请求响应事务。如果用户愿意,最大并行连接数可以设置为1,区样10条连接就会串行建立。

FTP

一个FTP连接,有两个TCP连接,一个是控制连接,一个是数据连接。

DNS

DNS是域名系统( Domain Name System,DNs):

  1. 一个由分层的DNs服务器(DNS
    server)实现的分布式数据库
  2. 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行BIND( Berkeley Internet Name Domain)软件[BND2012]的UNIX机器。

DNS协议运行在UDP之上,使用53号端口

DNS工作原理

  • 同一台用户主机上运行着DNS应用的客户端。
  • 浏览器从上述URL中抽取出主机名www.homeschool.edu,并将这台主机名传给DNS应用的客户端。
  • DNS客户向DNS服务器发送一个包含主机名的请求。
  • DNS客户最终会收到一份回答报文,其中含有对应于该主机名的P地址。
  • 一旦浏览器接收到来自DNS的该IP地址,它能够向位于该mP地址80端口的HTTP服务器进程发起一个TCP连接。

DNS主要服务

  1. 域名解析
  2. 主机别名
  3. 邮件服务器别名
  4. 负载均衡 一个域名可以有多个ip

三种类型DNS服务器

  • 根DNS服务器 根DNS服务器中的每个都视为单个的服务器,但每台“服务器”实际上是一个冗余服务器的网络,以提供安全性和可靠性。
  • 顶级域(DNS)服务器 这些服务器负责顶级域名如com、org、net、edu和gov以及所有国家的顶级域名如uk、fr、ca和jp。Verisign Global Registry Services公司维护com顶级域的TLD服务器; Educause公司维护edu顶级域的TD服务器。
  • 权威DNS服务器 在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为地址。一个组织机构的权威DNS服务器收藏了这些DNS记录。一个组织机构能够选择实现它自己的权威DNS服务器以保存这些记录。
  • 本地DNS服务器 主要用来缓存DNS,避免重复请求根DNS服务器。

p2p

传输层

运输层多路复用 多路分解

在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解( demultiplexing)

在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用

为了说明分解的工作过程,可以再以前面一节的家庭进行类比。每一个孩子通过他们的**名字(端口号)**来标识。当Bi从邮递员处收到一批信件,并通过查看收信人名字而将信件亲手交付给他的兄弟姐妹们时,他执行的就是一个分解操作。当An从兄弟姐妹们那里收集信件并将它们交给邮递员时,她执行的就是一个多路复用操作。

端口号是一个16比特的数,其大小在065535之间。01023范围的端口号称为周知端口号( well-known port
lumber),是受限制的,这是指它们保留给诸如HTP(它使用端口号80)和FTP(它使用端口号21)之类的周知应用层协议来使用。

tcp

tcp特点

  • 可靠数据传输,tcp保证正确地、顺序地将数据从发送进程交付给接进程
  • 提供拥塞控制,tcp通过调节发送端的发送速率实现。
  • 面向连接 ,发送数据之前必须要先相互握手 建立连接。
  • 全双工服务,即连接双方的进程可以在此连接上同时进行报文收发。

三次握手

  • 第一步:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包含应用层数据。但是在报文段的首部(参见图3-29)中的一个标志位(即SYN比特)被置为1。因此,这个特殊报文段被称为SYN报文段。另外,客户会随机地选择一个初始序号( client isn),并将此编号放置于该起始的 TCP SYN报文段的序号字段中。该报文段会被封装在一个IP数据报中,并发送给服务器。

  • 第二步:一旦包含 TCP SYN报文段的P数据报到达服务器主机(假定它的确到达了!),服务器会从该数据报中提取出 TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。(我们将在第8章看到,在完成三次握手的第三步之前分配这些缓存和变量,使得TCP易于受到称为SYN洪泛
    的拒绝服务攻击。)这个允许连接的报文段也不包含应用层数据。但是,在报文段的首部却包含3个重要的信息。首先,SYN比特被置为1。其次,该TCP报文段首部的确认号字段被置为 client isn+1。最后,服务器选择自己的初始序号( server_isn),并将其放置到TCP报文段首部的序号字段中。这个允许连接的报文段实际上表明了:“我收到了你发起建立连接的SYN分组,该分组带有初始序号client isn。我同意建立该连接。我自己的初始序号是 server Isn。”该允许连接的报文段有时被称为 SYNACK报文段( SYNACK segment)。

  • 第三步:在收到 SYNACK报文段后,客户也要给该连接分配缓存和变量。客户主机则向服务器发送另外一个报文段;这最后一个报文段对服务器的允许连接的报文段进行了确认(该客户通过将值 server Isn+1放置到TCP报文段首部的确认字段中来完成此项工作)。因为连接已经建立了,所以该SYN比特被置为0。该三次握手的第三个阶段可以在报文段负载中携带客户到服务器的数据。

四次挥手

SYN攻击

为什么tcp需要四次挥手
因为tcp是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。

安全的tcp–ssl
SSL称为安全套接字层,SL不是与TCP和UDP在相同层次上的第三种因特网
运输协议,而是一种对TCP的加强,这种强化是在用层上实现的。

参考 https://juejin.im/post/5d9c284b518825095879e7a5

udp

udp特点:

  • 不可靠数据传输,只管发送不管收到没
  • 流量不可调节,无拥塞控制

CDN原理

内容分发网( Content Distribution Network,CDN)。
CDN管理分布在多个地理位置上的服务器,在它的服务器中存储视频(和其他类型的Wcb内容,包括文档、图片和音频)的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置。CDN可以是专用CDN( private CDN),即它由内容提供商自己所拥有;例如,谷歌的CDN分发 You Tube视频和其他类型的内容。

  1. 用户访问NetCinema的Web网页
  2. 当用户点击链接http://video.netcinema.com/6Y7B23V时,该用户主机发送了一个对于video.neteinema.com的DNS请求。
  3. 用户的本地DNS服务器(LDNS)中继该DNS请求到一台用于 NetCinema的权威DNS服务器,该服务器观察到主机名 video.netcinema. com中的字符串“vide”。为了将该DNS请求移交给 KingCDN, NetCinema权威DNs服务器并不返回一个IP地址,而是向LDNS返回一个KingCDN域的主机名,如a105.kingedn.com
  4. 从这时起,DNS请求进入了 KingCDN专用DNS基础设施。用户的LDNS则发送第二个请求,此时是对a105. kingedn.com的DNs请求, KingCDN的DNs系统最终向LDNS返回 KingCDN内容服务器的IP地址。所以正是在这里,在 KingCDN的DNS系统中,指定了CDN服务器,客户将能够从这台服务器接收到它的内容
  5. LDNS向用户主机转发内容服务CDN结点的IP地址。
  6. 一旦客户收到 KingCDN内容服务器的IP地址,它与具有该IP地址的服务器创建了一条直接的TCP连接,并且发出对该视频的 Http Get请求。如果使用了DASH,服务器将首先向客户发送具有URL列表的告示文件,每个URL对应视频的每个版本,并且客户将动态地选择来自不同版本的块。