3月份第一次总结

转自掘金网https://juejin.im/post/5c591fda6fb9a049dc02b1cc#heading-23

 作者:小生方勤




网络基础

1.五层因特网协议栈

2.HTTP与HTTPS的区别

3.TCP/IP 协议

4.三次握手和四次挥手

5.DNS域名解析

6.五类IP地址

7.跨域的原因及处理方式

8.正向代理和反向代理

9.CDN带来的性能优化

10.HTTP强缓存&协商缓存

1.五层因特网协议栈

(1).应用层(application-layer)  

           作用:用来定义应用进程(进程:主机中正在运行的程序)间的通信和交互的规则

           在互联网中,应用层的协议还有域名系统DNS (Domain  name  system)、万维网应用的HTTP协议、支持电子邮件的SMTP协议

(2).传输层(transport layer)

           作用:负责两台主机进程间的通信提供的数据传输服务。

           传输层常用的两种协议:

           1.传输控制协议-TCP:提供面向连接的,可靠的数据传输服务

           2.用户数据协议-UDP:提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)

          TCP(transmission  Control   Protocol) 

           1.TCP是面向连接的(需要先建立连接)

           2.每一条TCP连接只能有两个端点,每一条TCP连接只能是一对一,

           3.TCP提供可靠交付的服务。通过TCP连接传送的数据,误差错、不丢失、不重复、并且序列到达

           4.TCP提供双全工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP两端都设有发送缓存和接收缓存,用来临时存放通信的数据。

          5.面向字节流。TCP中的流(Stream)指的是流入进程或从进程流出的字节序列。

          UDP(User Datagram  Protocol)

          1.UDP是无连接的。

          2.UDP是尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态。

          3.UDP是面向报文的。

          4.UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如直播、实时视频会议等....)

          5.UDP支持一对一、一对多、多对一和多对多的交互通信。

          6.UDP的首部开销小,只有8个字节,比TCP首部的20个字节要短。

                   (1).单工数据传输只支持数据在一个方向上传输

                    (2).半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,值允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。

                    (3).双全工数据通信允许数据同时在两个方向上传输,因此,双全工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。

  (3).网络层

             作用:选择合适的网间路由和交换节点,确保计算机通信的数据及时传送。

             互联网是由大量的异构网络通过路由器相互连接起来的。互联网使用的网络层协议是无连接的网际协议(intert prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层。

(4).数据链路层(链路层)  data llink  layer

            作用:两台主机间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。

            在两个相邻节点之间传送数据时,数据链路层将网络层接下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息、地址信息,差错控制等)

          在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束。

(5).物理层

           作用:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。

           “透明传输比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。在互联网使用的各种协议中最重要的和最著名的就是TCP/IP 两个协议。


同OSI七层协议模型、TCP/IP四层模型的区别

           1.OSI七层模型

                      OSI七层协议模型主要是:

                      应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data link) 、物理层。

         2.TCP/IP四层模型

                     TCP/IP是一个四层的体系结构,主要包括:

                     应用层(Application)、传输层(Transport)、网络层(Network)、和链路层(Link)


   

  HTTP 和HTTPS的区别

 1.协议

          HTTP:运行在TCP上,明文传输,客户端与服务端都无法验证对方的身份。

          HTTPS:审批SSL(secure  socker  layer  ) 外壳的HTTP,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP.

2.端口

       HTTP:80

      HTTPS:443

3.资源消耗

      HTTP:较少

      HTTPS:由于加密处理,会消耗更多的CPU和内存资源

4.开销

      HTTP:无需证书

      HTTPS:需要证书,而证书一般需要向认证机构购买

5.加密机制

      HTTP:无

      HTTPS:共享密钥加密和公开密钥加密并用的混合加密机制

6.安全性

      HTTP:弱

      HTTPS:由于加密机制,安全性强

对称加密与非对称加密

      对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全的将密钥发送给对方;

 而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可保证安全性;但是和对称加密比起来,非常的慢。

      因此,我们还是用对称加密来发送消息,但对称加密使用的私钥我们可以通过非对称加密的方式发送出去。

HTTP2

       意义:提高了网页的性能

       在HTTP1中浏览器限制了同一域名下的请求数量(chrome下一般是六个),当在请求很多资源的时候,由于对头阻塞,当浏览器达到最大请求数量时,剩余的资源需要等待当前的六个请求完成后才能进行请求。

        HTTP2中引用了多路复用的技术,这个技术可以只通过一个TCP连接就可以传送所有的请求数据。多路复用可以绕过浏览器限制同一个域名下的请求数量的问题,进而提高了网页的性能。



TCP/IP协议

        负责传输的IP协议

       按层次分,IP(Internet  Protocol)  网际协议位于网络层,IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件,其中两个重要的条件是IP地址和MAC地址(Media   Access  Control  Address) .

      IP地址和MAC地址:指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址,IP地址可以和MAC地址进行配对。IP地址可变换但MAC地址基本上不会更改

     使用ARP协议凭借MAC地址进行通信

     1.IP间的通信依赖MAC地址。

     2.ARP是一种用以解释地址的协议,根据通信方的IP地址就可以反查出对应方的MAC地址。

TCP协议如何保证传输的可靠性

     tcp提供一种面向连接的、可靠的字节流服务。

      1.面向连接

          意味着两个使用TCP的应用(通常是一个应用和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信;

      2.字节流服务

         意味着两个应用程序通过TCP连接交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符。

    TCP之所以可靠,大体上由于以下原因:

           1.数据包校验:目的是检测数据在传输过程中的任何变化,若校验包有错,则丢弃报文段并且不给出响应,这是TCP发送数据端超时后会重发数据;

           2.对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将会对失序数据进行重新排序,然后才交给应用层;

         3.丢弃重复数据:对于重复数据,能够丢弃重复数据;

         4.应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。

        5.超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

       6.流量控制:TCP连接的每一方都有固定大小的缓存空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓存区溢出,这就是流量控制。

  TCP/IP通信传输流



发送端在层与层之间传送数据时,每经过一层必定会加上一个该层的首部信息。反之,接收端在层与层之间传输数据时,每经过一层会把相关的首部信息去掉。

TCP三次握手和四次挥手

TCP(Transmission  control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层控制协议,由IPTF的RFC793定义。

三次握手

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(已建立连接)状态。


完成三次握手,客户端与服务器开始传送数据。

注:

seq:"sequance" 序列号;

ack:"acknowledge" 确认号;

SYN:"synchronize" 请求同步标志;

ACK:"acknowledge" 确认标志;

FIN:"Finally" 结束标志。


未连接队列

在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目已表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所表示的连接在服务器处于SYN_RECV状态,当服务器收到客户端的确认包时,删除该条目,服务器进入ESTABLISHED状态。

建立一个连接需要三次握手,而终止一个连接要经过四次挥手,这是由TCP的半关闭(half - close)造成的。



四次挥手



第一次挥手:

客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部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(时间等待)状态。

四次的原因

这是因为服务端的 LISTEN 状态下的 SOCKET 当收到 SYN 报文的建连请求后,它可以把 ACK 和 SYN(ACK 起应答作用,而 SYN 起同步作用)放在一个报文里来发送。    但关闭连接时,当收到对方的 FIN 报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你未必会马上会关闭 SOCKET ,也即你可能还需要发送一些数据给对方之后,再发送 FIN 报文给对方来表示你同意现在可以关闭连接了,所以它这里的 ACK 报文和 FIN 报文多数情况下都是分开发送的.

由于 TCP 连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动,一个 TCP 连接在收到一个 FIN 后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

DNS 域名解析


当你在浏览器的地址栏输入https://juejin.im后会发生什么,大家在心中肯定是有一个大概的,这里我将DNS 域名解析这个步骤详细的讲一遍。在讲概念之前我先放上一张经典的图文供大家思考一分钟。



查找域名对应的 IP 地址的具体过程

1.浏览器搜索自己的 DNS 缓存(浏览器维护一张域名与 IP 地址的对应表);如果没有命中,进入下一步;

2.搜索操作系统中的 DNS 缓存;如果没有命中,进入下一步;

3.搜索操作系统的 hosts 文件( Windows 环境下,维护一张域名与 IP 地址的对应表);如果没有命中,进入下一步;






DNS Prefetch

即 DNS 预获取,是前端优化的一部分。一般来说,在前端优化中与 DNS 有关的有两点:

减少 DNS 的请求次数

进行 DNS 预获取

典型的一次 DNS 解析需要耗费 20-120  毫秒,减少DNS解析时间和次数是个很好的优化方式。DNS Prefetching 是让具有此属性的域名不需要用户点击链接就在后台解析,而域名解析和内容载入是串行的网络操作,所以这个方式能减少用户的等待时间,提升用户体验。




TCP状态转换图





SSL单向/双向认证详解(其实是握手过程的详解)

     


 

   

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • 当 app 和服务器进行通信的时候,大多数情况下,都是采用 HTTP 协议。HTTP 最初是为 web 浏览器而定...
    Flysss1219阅读 1,265评论 0 4
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,477评论 0 6
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,054评论 0 8
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,956评论 1 13
  • 小时候,总被父亲骂:死去吧,你活着有什么用? 有一次我坐在村口的河边哭到半夜。 边哭边想:我为什么活着呢?不知道。...
    努力成为可爱的自己阅读 245评论 1 2