(2000+收藏))
文章目录一、网络 7 层架构(ISO/OSI协议参考模型)二、TCP/IP 原理1、应用层(Application Layer)2、传输层(Tramsport Layer-TCP/UDP)3、网络层(Internet Layer)4、网络访问层(Network Access Layer)5、四层协议和对应的标准七层协议的关系如下图三、TCP 三次握手/四次挥手1、三次握手2、四次挥手3、TCP/IP状态四、TCP 长连接与短连接1、长连接和短连接使用原因2、HTTP的长连接和短连接3、TCP—长连接4、TCP—短连接5、应用场景五、 HTTP 原理1、地址解析2、封装 HTTP 请求数据包3、封装成 TCP 包并建立连接4、客户机发送请求命5、服务器响应6、服务器关闭 TCP 连接六、HTTPS1、SSL/TLS之间的关系2、建立连接获取证书3、证书验证4、数据加密和传输七、CDN 原理1、分发服务系统2、负载均衡系统3、管理系统八、TCP/IP协议族1、应用层协议—文件传输服务(FTP)2、应用层协议—远程登录协议(Telnet)3、应用层协议—电子邮件协议SMTP)4、传输层协议—TCP5、传输层协议—UDP6、网际层协议—IP7、网际层协议—ICMP8、网际层协议—ARP和RARP9、网络接口层协议—以太网(Ethernet IEEE 802.310、网络接口层协议—令牌环网(Ethernet IEEE 802.5)11、网络接口层协议—光纤分布式数据接口(FDDI)12、网络接口层协议—点对点协议(PPP)13、其他—ADSL(非对称用户数据线)14、其他—IPv4和IPv6一、网络 7 层架构(ISO/OSI协议参考模型)物理层主要定义物理设备标准如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为1、0也就是我们常说的模数转换与数模转换。这一层的数据叫做比特。数据链路层主要将从物理层接收的数据进行 MAC 地址网卡的地址的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机数据通过交换机来传输。网络层主要将从下层接收到的数据进行 IP 地址例 192.168.0.1)的封装与解封装。在这一层工作的设备是路由器常把这一层的数据叫做数据包。传输层定义了一些传输数据的协议和端口号WWW 端口 80 等如TCP传输控制协议传输效率低可靠性强用于传输可靠性要求高数据量大的数据UDP用户数据报协议与 TCP 特性恰恰相反用于传输可靠性要求不高数据量小的数据如 QQ 聊天数据就是通过这种方式传输的。 主要是将从下层接收的数据进行分段进行传输到达目的地址后在进行重组。常常把这一层数据叫做段。会话层通过传输层端口号传输端口与接收端口建立数据传输的通路。主要在你的系统之间发起会话或或者接受会话请求设备之间需要互相认识可以是 IP 也可以是 MAC 或者是主机名表示层主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等也就是把计算机能够识别的东西转换成人能够能识别的东西如图片、声音等应用层主要是一些终端的应用比如说FTP各种文件下载WEBIE浏览QQ之类的你就把它理解成我们在电脑屏幕上可以看到的东西就 是终端应用。二、TCP/IP 原理TCP/IP 协议不是 TCP 和 IP 这两个协议的合称而是指因特网整个 TCP/IP 协议族。从协议分层模型方面来讲TCP/IP 由四个层次组成网络接口层、网络层、传输层、应用层。1、应用层(Application Layer)应用层(Application Layer)包含所有的高层协议包括虚拟终端协议(TELNETTELecommunications NETwork)、文件传输协议(FTPFile Transfer Protocol)、电子邮件传输协议(SMTPSimple Mail Transfer Protocol)、域名服务(DNSDomain Name Service)、网上新闻传输协议(NNTPNet News Transfer Protocol)和超文本传送协议(HTTPHyperText Transfer Protocol)等。2、传输层(Tramsport Layer-TCP/UDP)传输层(Tramsport Layer)使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议传输控制协议(TCPTransmission Control Protocol)和用户数据报协议(UDPUser Datagram Protocol)。TCP 是面向连接的协议它提供可靠的报文传输和对上层应用的连接服务。为此除了基本的数据传输外它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP 是面向无连接的不可靠传输的协议主要用于不需要 TCP 的排序和流量控制等功能的应用程序。3、网络层(Internet Layer)网络层(Internet Layer)是整个体系结构的关键部分其功能是使主机可以把分组发往任何网络并使分组独立地传向目标。这些分组可能经由不同的网络到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发那么就必须自行处理对分组的排序。互联网层使用因特网协议(IPInternet Protocol)。4、网络访问层(Network Access Layer)网络访问层(Network Access Layer)在 TCP/IP 是TCP/IP协议栈的最底层它提供物理网络的接口实现对复杂数据的发送和接收。网络访问层协议为网络接口、数据传输提供了对应的技术规范。网络访问层对应 OSI 七层网络模型的物理层和数据链路层。5、四层协议和对应的标准七层协议的关系如下图三、TCP 三次握手/四次挥手1、三次握手第一次握手主机 A 发送位码为 syn1,随机产生 seq number1234567 的数据包到服务器主机 B由 SYN1 知道A 要求建立联机第二次握手主机 B 收到请求后要确认联机信息向 A 发 送 ack number( 主 机 A 的seq1),syn1,ack1,随机产生 seq7654321 的包第三次握手主机 A 收到后检查 ack number 是否正确即第一次发送的 seq number1,以及位码ack 是否为 1若正确主机 A 会再发送 ack number(主机 B 的 seq1),ack1主机 B 收到后确认。2、四次挥手TCP 建立连接要进行三次握手而断开连接要进行四次。这是由于 TCP 的半关闭造成的。因为TCP 连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭。这个单方向的关闭就叫半关闭。当一方完成它的数据发送任务就发送一个 FIN 来向另一方通告将要终止这个方向的连接。关闭客户端到服务器的连接首先客户端 A 发送一个 FIN用来关闭客户到服务器的数据传送然后等待服务器的确认。其中终止标志位 FIN1序列号 sequ服务器收到这个 FIN它发回一个 ACK确认号 ack 为收到的序号加 1。关闭服务器到客户端的连接也是发送一个 FIN 给客户端。客户段收到 FIN 后并发回一个 ACK 报文确认并将确认序号 seq 设置为收到序号加 1。首先进行关闭的一方将执行主动关闭而另一方执行被动关闭。主机 A 发送 FIN 后进入终止等待状态 服务器 B 收到主机 A 连接释放报文段后就立即给主机 A 发送确认然后服务器 B 就进入 close-wait 状态此时 TCP 服务器进程就通知高层应用进程因而从 A 到 B 的连接就释放了。此时是“半关闭”状态。即 A 不可以发送给B但是 B 可以发送给 A。此时若 B 没有数据报要发送给 A 了其应用进程就通知 TCP 释放连接然后发送给 A 连接释放报文段并等待确认。A 发送确认后进入 time-wait注意此时 TCP 连接还没有释放掉然后经过时间等待计时器设置的 2MSL 后A 才进入到close 状态。为什么会有TIME_WAIT状态确保有足够的时间让对方收到ACK包避免新旧连接混淆3、TCP/IP状态1、LISTENINGlistening)FTP服务启动后首先处于侦听LISTENING状态。2、ESTABLISHEDestablished建立连接。表示两台机器正在通信。3、CLOSE_WAIT对方主动关闭连接或者网络异常导致连接中断这时我方的状态会变成CLOSE_WAIT此时我方要调用close()来使得连接正确关闭。4、TIME_WAIT我方主动调用close()断开连接收到对方确认后状态变为TIME_WAIT。5、SYN_SENTSYN_SENT状态表示请求连接当你要访问其它的计算机的服务时首先要发个同步信号给该端口此时状态为SYN_SENT如果连接成功了就变为 ESTABLISHED。四、TCP 长连接与短连接1、长连接和短连接使用原因当网络通信时采用TCP协议时在真正的读写操作之前server与client之间必须建立一个连接当读写操作完成后双方不再需要这个连接时它们可以释放这个连接连接的建立是需要三次握手的而释放则需要4次挥手所以说每个连接的建立都是需要资源消耗和时间消耗的。2、HTTP的长连接和短连接HTTP的长连接和短连接本质上是TCP长连接和短连接。在HTTP/1.0中默认使用短连接。也就是说客户端和服务器每进行一次HTTP操作就建立一次连接任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源如JavaScript文件、图像文件、CSS文件等每遇到这样一个Web资源浏览器就会重新建立一个HTTP会话。而从HTTP/1.1起默认使用长连接用以保持连接特性。使用长连接的HTTP协议会在响应头加入这行代码Connection:keep-alive在使用长连接的情况下当一个网页打开完成后客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭客户端再次访问这个服务器时会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接它有一个保持时间可以在不同的服务器软件如Apache中设定这个时间。实现长连接需要客户端和服务端都支持长连接。3、TCP—长连接 所谓长连接指在一个TCP连接上可以连续发送多个数据包在TCP连接保持期间如果没有数据包发送需要双方发检测包以维持此连接一般需要自己做在线维持不发生RST包和四次挥手。连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接一个TCP连接通道多个读写通信这就要求长连接在没有数据通信时定时发送数据包(心跳)以维持连接状态 TCP保活功能保活功能主要为服务器应用提供服务器应用希望知道客户主机是否崩溃从而可以代表客户使用资源。如果客户已经消失使得服务器上保留一个半开放的连接而服务器又在等待来自客户端的数据则服务器将应远等待客户端的数据保活功能就是试图在服务器端检测到这种半开放的连接。4、TCP—短连接 短连接是指通信双方有数据交互时就建立一个TCP连接数据发送完成后则断开此TCP连接管理起来比较简单存在的连接都是有用的连接不需要额外的控制手段 连接→数据传输→关闭连接5、应用场景长连接多用于操作频繁读写点对点的通讯而且连接数不能太多情况。每个TCP连接都需要三步握手这需要时间如果每个操作都是先连接再操作的话那么处理速度会降低很多所以每个操作完后都不断开次处理时直接发送数据包就OK了不用建立TCP连接。例如数据库的连接用长连接 如果用短连接频繁的通信会造成socket错误而且频繁的socket 创建也是对资源的浪费。短连接像WEB网站的http服务一般都用短链接http1.0只支持短连接1.1keep alive 带时间操作次数限制的长连接因为长连接对于服务端来说会耗费一定的资源而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源如果用长连接而且同时有成千上万的用户如果每个用户都占用一个连接的话那可想而知吧。所以并发量大但每个用户无需频繁操作情况下需用短连好五、 HTTP 原理HTTP 是一个无状态的协议。无状态是指客户机Web 浏览器和服务器之间不需要建立持久的连接这意味着当一个客户端向服务器端发出请求然后服务器返回响应(response)连接就被关闭了在服务器端不保留连接的有关信息.HTTP 遵循请求(Request)/应答(Response)模型。客户机浏览器向服务器发送请求服务器处理请求并返回适当的应答。所有 HTTP 连接都被构造成一套请求和应答。1、地址解析如用客户端浏览器请求这个页面http://www.lydms.com:8080/index.htm 从中分解出协议名、主机名、端口、对象路径等部分对于我们的这个地址解析得到的结果如下协议名http主机名www.lydms.com端口8080对象路径/index.htm在这一步需要域名系统 DNS 解析域名 localhost.com,得主机的 IP 地址。2、封装 HTTP 请求数据包把以上部分结合本机自己的信息封装成一个 HTTP 请求数据包3、封装成 TCP 包并建立连接封装成 TCP 包建立 TCP 连接TCP 的三次握手4、客户机发送请求命客户机发送请求命令建立连接后客户机发送一个请求给服务器请求方式的格式为统一资源标识符URL、协议版本号后边是 MIME 信息包括请求修饰符、客户机信息和可内容。5、服务器响应服务器接到请求后给予相应的响应信息其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码后边是 MIME 信息包括服务器信息、实体信息和可能的内容。6、服务器关闭 TCP 连接一般情况下一旦 Web 服务器向浏览器发送了请求数据它就要关闭 TCP 连接然后如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-aliveTCP 连接在发送后将仍然保持打开状态于是浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间还节约了网络带宽。六、HTTPSHTTPS全称Hypertext Transfer Protocol over Secure Socket Layer是以安全为目标的HTTP 通道简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层HTTPS 的安全基础是 SSL。其所用的端口号是 443。 过程大致如下1、SSL/TLS之间的关系SSL 是英文“Secure Sockets Layer”的缩写中文叫做“安全套接层”。它是在上世纪90年代中期由网景公司设计的。为啥要发明 SSL 这个协议呢因为原先互联网上使用的 HTTP 协议是明文的存在很多缺点——比如传输内容会被偷窥嗅探和篡改。发明 SSL 协议就是为了解决这些问题。到了1999年SSL 因为应用广泛已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS是“Transport Layer Security”的缩写中文叫做“传输层安全协议”。很多人都把这两者并列称呼SSL/TLS因为这两者可以视作同一个东西的不同阶段。2、建立连接获取证书SSL 客户端通过 TCP 和服务器建立连接之后443 端口并且在一般的 tcp 连接协商握手过程中请求证书。即客户端发出一个消息给服务器这个消息里面包含了自己可实现的算法列表和其它一些需要的消息SSL 的服务器端会回应一个数据包这里面确定了这次通信所需要的算法然后服务器向客户端返回证书。证书里面包含了服务器信息域名。申请证书的公司公共秘钥。3、证书验证Client 在收到服务器返回的证书后判断签发这个证书的公共签发机构并使用这个机构的公共秘钥确认签名是否有效客户端还会确保证书中列出的域名就是它正在连接的域名。4、数据加密和传输如果确认证书有效那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务器服务器使用它的私钥对它进行解密这样两台计算机可以开始进行对称加密进行通信。七、CDN 原理CND 一般包含分发服务系统、负载均衡系统和管理系统。1、分发服务系统其基本的工作单元就是各个 Cache 服务器。负责直接响应用户请求将内容快速分发到用户同时还负责内容更新保证和源站内容的同步。根据内容类型和服务种类的不同分发服务系统分为多个子服务系统如网页加速服务、流媒体加速服务、应用加速服务等。每个子服务系统都是一个分布式的服务集群由功能类似、地域接近的分布部署的 Cache 集群组成。在承担内容同步、更新和响应用户请求之外分发服务系统还需要向上层的管理调度系统反馈各个Cache 设备的健康状况、响应情况、内容缓存状况等以便管理调度系统能够根据设定的策略决定由哪个 Cache 设备来响应用户的请求。2、负载均衡系统负载均衡系统是整个 CDN 系统的中枢。负责对所有的用户请求进行调度确定提供给用户的最终访问地址。使用分级实现。最基本的两极调度体系包括全局负载均衡GSLB和本地负载均衡SLB。GSLB 根据用户地址和用户请求的内容主要根据就近性原则确定向用户服务的节点。一般通过 DNS解析或者应用层重定向Http 3XX 重定向的方式实现。SLB 主要负责节点内部的负载均衡。当用户请求从 GSLB 调度到 SLB 时SLB 会根据节点内各个Cache 设备的工作状况和内容分布情况等对用户请求重定向。SLB 的实现有四层调度LVS、七层调度Nginx和链路负载调度等。3、管理系统分为运营管理和网络管理子系统。网络管理系统实现对 CDN 系统的设备管理、拓扑管理、链路监控和故障管理为管理员提供对全网资源的可视化的集中管理通常用 web 方式实现。运营管理是对 CDN 系统的业务管理负责处理业务层面的与外界系统交互所必须的一些收集、整理、交付工作。包括用户管理、产品管理、计费管理、统计分析等。八、TCP/IP协议族TCP/IP只提供无连接、不可靠的服务。传输之前需要进行三次握手。IP的主要功能包括将上层数据(如TCP、UDP数据)或者同层的其它数据(如ICMP数据)封装到IP数据报中将IP数据报传送到最终目的地为了使数据能够在链路层上进行传输对数据进行分段确定数据报到达其它网络中的目的地的路径。1、应用层协议—文件传输服务(FTP)用来在计算机之间传输文件。实际Internet的FTP服务是一种匿名(anonymous)FTP服务设置一个特殊的用户名-anonymous供公众使用。匿名登录到FTP服务器后其工作方式与常规FTP相同。通常处于安全目的大多数匿名FTP服务器只允许下载不允许上传文件。FTP在客户端到服务器建立2条TCP连接一条是控制连接主要用于传输命令和参数(端口21)另一条是数据连接主要用于传输文件(端口号20)。2、应用层协议—远程登录协议(Telnet)远程登录服务实在Telnet协议的支持下将用户计算机和远程主机连接起来在远程计算机上运行程序用户输入的信息通过Telnet协议发送给远程主机主机在TCP端口监听用户请求并处理后将结果通过Telnet协议返回给客户。客户再经过适当的转换显示在计算机屏幕上。因为使用Telnet命令进行远程登录所有称为Telnet远程登录。由客户端软件、服务器软件以及Telnet通用协议三部分组成。3、应用层协议—电子邮件协议SMTP)电子邮件(E-mail)利用计算机进行信息交换的电子媒体信件。基于客户端/服务器模式有E-mail客户端软件、E-mail服务器、通信协议三部分组成。发送邮件首先到达自己注册的邮件服务器主机再在网络传输中经过多个计算机和路由中转到达目的地的邮件服务器主机进入收件人的电子邮箱最后邮件的接收者上网并启动电子邮件管理程序会自动下载到自己计算机完成接受邮件。SMTP简单邮件传输协议MIMEInternet邮件扩充协议PEM增强私密邮件保护协议POP来保管用户未能及时取走的邮件简单的纯文本协议每次传输以正规E-mail为单位不提供部分传输。4、传输层协议—TCP在IP提供的不可靠数据服务的基础上为应用程序提供一个可靠的、面向连接的、全双工的数据传输服务。TCP在源主机和目的之间建立和关闭连接操作是均需要通过三次握手来确认建立和关闭是否成功。TCP虽然提供了一个可靠的数据传输服务但是以牺牲通信量来实现的。TCP采用了重发技术发送数据时启动定时器在规定时间内没有收到确认信息就重新发送数据包。5、传输层协议—UDP用户数据报协议是一种不可靠、无连接的协议与同层面向连接的TCP相比UDP是一种无连接的协议(无错误检测功能)。TCP有助于提供可靠的连接UDP有助于提高传输的高速率性。不负责重新发送丢失的包不对接收的数据进行排序不消除重复的IP数据报不负责建立和终止连接。(都是UDP应用程序负责的)TCP交互式会话应用程序(FTP等)。UDP自己进行错误检测、不需要检测错误(DNS、SNMP)。6、网际层协议—IPIP只提供无连接、不可靠的服务把差错检测和流量控制之类的服务授权给了其他层的协议。IP的主要功能将上层数据(TCP、UDP数据)或同层其他数据(ICMP数据)封装到IP数据报中将IP数据报传送到最终目的地为了使数据能够在链路层上进行传输对数据进行分段确定数据报到达其它网络中的目的地的路径。7、网际层协议—ICMPInternet控制信息协议用于发送查错报文的协议。ICMP让IP更加稳固。也是利用IP来传送报文的。ping工具就是利用ICMP报文进行目标是否可达测试。5种差错报文(源抑制、超时、目的不可达、重定向和要求分段)4种信息报文回应请求、回应应答、地址屏蔽码请求和地址屏蔽码应答。8、网际层协议—ARP和RARP地址解析协议(ARP)和反地址解析协议(RARP)ARP的作用是将IP地址转为物理地址RARP的作用是将物理地址转为IP地址。每台设备都有唯一的物理地址(通过网卡给出)为了屏蔽底层协议及物理地址上的差异IP协议又使用了IP地址。因此在传输过程中必须对IP地址和物理地址进行相互转换。9、网络接口层协议—以太网(Ethernet IEEE 802.3Ethernet IEEE 802.3标准局域网速度10Mps传输介质为铜缆。Ethernet IEEE 802.3u快速以太网速度100Mps传输介质为双绞线。Ethernet IEEE 802.3z千兆以太网速度1000Mps传输介质为光纤或双绞线。10、网络接口层协议—令牌环网(Ethernet IEEE 802.5)1、只有拥有令牌才可以发送数据。2、发送数据时需要捕获一个令牌。3、令牌不为空需要等待。11、网络接口层协议—光纤分布式数据接口(FDDI)以光纤为传输介质。采用双环体系结构两环上的信息反方向流动。双环中一环称为主环另一个环称为次环。正常情况下主环传输数据次环处于空闲状态。双环设计的目的是提供高可靠性和稳定性。FDDI定义的传输介质有单模光纤和多模光纤两种。12、网络接口层协议—点对点协议(PPP)主要用于”拨号上网“这种广域连接模式。优点简单、具备用户验证功能、可以解决IP分配等。为各种主机、网桥和路由器之间简单连接的一种通用解决方案。利用以太网(Ethernet)资源在以太网上运行PPP来进行用户认证接入的方式成为PPPoE。是目前ADSL接入方式中最广泛的技术标准。ATM网络撒花姑娘运行PPP来管理用户再认证的方式成为PPPoA。PPPoA和PPPoE运行原理相同不同的是运行环境的不同。13、其他—ADSL(非对称用户数据线)ADSL Modem上网拨号方式有3中即专线方式(静态IP)、PPPoA和PPPoE。ADSL独享带宽安全可靠。费用低廉,使用过去的电话线路可以分离电话机和ADSL Modem(上网)。14、其他—IPv4和IPv6IPv432位二进制能表示IP地址个数2^3240亿IPv6:128位二级制能表示IP地址个数21283.4*1038。