网站建设可以帮助企业,惠州网站建设推广公司,wordpress站群功能,丽水 网站建设1 引言 在计算机网络中要做到有条不紊地交换数据#xff0c;就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的#xff08;即同频或同频同相#xff09;而是广义的#xff0c;即在一定的条件下应当发生什…1 引言 在计算机网络中要做到有条不紊地交换数据就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的即同频或同频同相而是广义的即在一定的条件下应当发生什么事情例如应当发送一个应答信息因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议network protocol。网络协议也可简称为协议。更进一步的讲网络协议主要由以下三个要素组成
语法即数据与控制信息的结构或格式语义即需要发出何种控制信息完成何种动作以及做出何种响应同步即事件实现顺序的详细说明。 由此可见网络协议是计算机网络不可缺少的部分。实际上只要我们想让连接在网络上的另一台计算机做点儿什么事情例如从网络上的某台主机下载文件我们都需要有协议。 协议通常有两种不同的形式。一种是使用便于人来阅读和理解的文字描述另一种是使用让计算机能够理解的程序代码。这两种不同形式的协议都必须能够对网络上的信息交换过程做出精确的解释。 常见的计算机网络体系结构主要有OSI的七层协议、TCP\IP的四层协议和五层协议本文主要讲述应用最为广泛的TCP/IP协议。
2 IP协议 IP 协议是把上层数据报封装成 IP 数据报后进行传输如果 IP 数据报太大还要对数据报进行分片后再传输到了目的地址处再进行组装还原以适应不同物理网络对一次所能传输数据大小的要求。
2.1 IP协议的特点
IP协议是一种无连接、不可靠的分组传送服务的协议IP协议是点-点线路的网络层通信协议。IP协议是针对原主机-路由器、路由器-路由器、路由器-目的主机之间的数据传输的点-点线路网络层通信协议IP协议屏蔽了网络在数据链路层、物理层协议与实际技术上的差异。通过IP协议网络层向传输层提供的是统一的IP分组传输层不需要考虑互联网在数据链路层、物理层协议与实现技术上的差异IP协议使得异构网络的互联变得容易了
2.2 为什么要使用IPv6 目前主流IP是基于IPv4的但IPV4网络难以实现网络实名制一个重要原因就是因为IP资源的共用因为IP资源不够IPV4为32位所以不同的人在不同的时间段共用一个IPIP和上网用户无法实现一一对应。而IPv6128位足够长的普及将改变现状因为IPv6一个重要的应用将是实现网络实名制下的互联网身份证/VIeID。
IPv6地址表示方法
冒分十六进制表示法0位压缩表示法内嵌IPv4地址表示法。
2.3 IP数据包的格式 数据报格式如下首部的长度是以32位4个字节为单位长度可以是20-60字节这跟首部长度字段有关。 一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度共20字节是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段其长度是可变的。
3 TCP/UDP 在TCP/IP体系结构的传输层两个重要协议是TCP、UDP。
3.1 TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的 基于IP的传输层协议。TCP在IP报文的协议号是6。TCP是一个超级麻烦的协议而它又是互联网的基础。
3.1.1 TCP报文格式 如上图所示TCP数据格式是由若干具有特殊含义字段组成的。
Source Port和Destination Port分别占用16位表示源端口号和目的端口号;用于区别主机中的不同进程 而IP地址是用来区分不同的主机的源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一 的确定一个TCP连接 Sequence Number用来标识从TCP发端向TCP收端发送的数据字节流它表示在这个报文段中的的第一个数据 字节在数据流中的序号;主要用来解决网络报乱序的问题 Acknowledgment Number32位确认序列号包含发送确认的一端所期望收到的下一个序号因此确认序号应 当是上次已成功收到数据字节序号加1。不过只有当标志位中的ACK标志(下面介绍)为1时该确认序列号的字 段才有效。主要用来解决不丢包的问题 Offset给出首部中32 bit字的数目需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能 表示15个32bit的的字即4*1560个字节的首部长度)因此TCP最多有60字节的首部。然而没有任选字段 正常的长度是20字节 TCP Flags:TCP首部中有6个标志比特它们中的多个可同时被设置为1主要是用于操控TCP的状态机的依次 为URGACKPSHRSTSYNFIN。 URG此标志表示TCP包的紧急指针域(后面马上就要说到)有效用来保证TCP连接不被中断并且督促 中间层设备要尽快处理这些数据 ACK此标志表示应答域有效就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值0和1 为1的时候表示应答域有效反之为0 PSH这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后立即传送给应用程序 而不是在缓冲区中排队 RST这个标志表示连接复位请求。用来复位那些产生错误的连接也被用来拒绝错误和非法的数据包 SYN表示同步序号用来建立连接。SYN标志位和ACK标志位搭配使用当连接请求的时候SYN1 ACK0连接被响应的时候SYN1ACK1这个标志的数据包经常被用来进行端口扫描。扫描者发送 一个只有SYN的数据包如果对方主机响应了一个数据包回来 就表明这台主机存在这个端口;但是由于这 种扫描方式只是进行TCP三次握手的第一次握手因此这种扫描的成功表示被扫描的机器不很安全一台安全 的主机将会强制要求一个连接严格的进行TCP的三次握手 Window窗口大小也就是有名的滑动窗口用来进行流量控制。这是一个复杂的问题本文不再论述。
3.1.2 TCP协议的三次握手 TCP是面向连接的无论哪一方向另一方发送数据之前都必须先在双方之间建立一条连接。在TCP/IP协议中TCP 协议提供可靠的连接服务连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。如下图TCP的通信过程所示 三次握手具体过程状态如下其实可以类比打电话的过程甲打电话并等待接听→乙收到来电显示“并表示可以接听”→“甲收到乙可以接听的信息”甲接听电话。注引号部分是打电话过程中没有的但在TCP三次握手中存在 第一次握手建立连接。客户端发送连接请求报文段将SYN位置为1Sequence Number为x;然后客户端进入SYN_SEND状态等待服务器的确认。客户的建立连接并等待确认 第二次握手服务器收到SYN报文段。服务器收到客户端的SYN报文段需要对这个SYN报文段进行确认设置Acknowledgment Number为x1(Sequence Number1);同时自己自己还要发送SYN请求信息将SYN位置为1Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYNACK报文段)中一并发送给客户端此时服务器进入SYN_RECV状态。服务器端发送相关报文段信息并等待连接 第三次握手客户端收到服务器的SYNACK报文段。然后将Acknowledgment Number设置为y1向服务器发送ACK报文段这个报文段发送完毕以后客户端和服务器端都进入ESTABLISHED状态完成TCP三次握手。客户的接收到服务端信息并实现连接 然后客户端和服务端就能实现正常的数据传输啦
3.2 UDP UDP 是User Datagram Protocol的简称 中文名是用户数据报协议是OSIOpen System Interconnection开放式系统互联 参考模型中一种无连接的传输层协议提供面向事务的简单不可靠信息传送服务IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
3.2.1 UDP报文格式
与TCP协议不同UDP协议是非面向连接的不可靠协议因此没有了SYN等处理两端等待或连接的报文段相比之下UDP的报文格式更为简单主要由报文头由均16位的源端口号、目的端口号、UDP长度和UDP校验和组成和具体传输数据组成。如图所示 UDP长度UDP报文的整个大小最小为8个字节16*4位仅为首部。 UDP检验和在进行检验和计算时会添加一个伪首部一起进行运算。伪首部占用12个字节为4个字节的源IP地址、4个字节的目的IP地址、1个字节的0、一个字节的数字17、以及占用2个字节UDP长度。这个伪首部不是报文的真正首部只是引入为了计算校验和。相对于IP协议的只计算首部UDP检验和会把首部和数据一起进行校验。接收端进行的校验和与UDP报文中的校验和相与如果无差错应该全为1。如果有误则将报文丢弃或者发给应用层、并附上差错警告。
3.2.2 UDP特性
UDP是一个无连接协议传输数据之前源端和终端不建立连接当 UDP想传送时就简单地去抓取来自应用程序的数据并尽可能快地把它扔到网络上。在发送端UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制在接收端UDP把每个消息段放在队列中应用程序每次从队列中读一个消息段。由于传输数据不建立连接因此也就不需要维护连接状态包括收发状态等因此一台服务机可同时向多个客户机传输相同的消息。UDP信息包的标题很短只有8个字节相对于TCP的20个字节信息包的额外开销很小。吞吐量不受拥挤控制算法的调节只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。UDP使用尽最大努力交付即不保证可靠交付因此主机不需要维持复杂的链接状态表这里面有许多参数UDP是面向报文的。发送方的UDP对应用程序交下来的报文在添加首部后就向下交付给IP层。既不拆分也不合并而是保留这些报文的边界因此应用程序需要选择合适的报文大小。 虽然UDP是一个不可靠的协议但它是分发信息的一个理想协议。
3.3 TCP与UDP的区别 TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议它们之间的区别包括
TCP是面向连接的UDP是无连接的TCP是可靠的UDP是不可靠的TCP只支持点对点通信UDP支持一对一、一对多、多对一、多对多的通信模式TCP是面向字节流的UDP是面向报文的TCP有拥塞控制机制;UDP没有拥塞控制适合媒体通信TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大
3 HTTP/HTTPS HTTP/HTTPS是运行在TCP协议上的协议。HTTPHypertext Transfer Protocol超文本传输协议主要用于普通浏览HTTPSHTTP over SSL安全超文本传输协议是HTTP协议的安全版本。
3.1 HTTP 超文本传输协议HTTPHyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的万维网WWWWorld Wide Web文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法并称之为超文本hypertext,这成为了HTTP超文本传输协议标准架构的发展根基。 HTTP是一个基于TCP/IP通信协议来传递数据HTML 文件, 图片文件, 查询结果等。HTTP是一个属于应用层的面向对象的协议由于其简捷、快速的方式适用于分布式超媒体信息系统。它于1990年提出经过几年的使用与发展得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版HTTP/1.1的规范化工作正在进行之中而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后向客户端发送响应信息。
3.1.1 HTTP特点 HTTP是一个客户端和服务器端请求和应答的标准通常由HTTP客户端发起一个请求建立一个到服务器指定端口默认是80端口的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求服务器向客户端发回一个状态行。HTTP使用TCP而不是UDP的原因在于打开一个网页必须传送很多数据而TCP协议提供传输控制按顺序组织数据和错误纠正。 通过HTTP或者HTTPS协议HTTP协议SSL协议请求的资源由统一资源标示符Uniform Resource Identifiers来标识。HTTP有以下特点
简单快速客户向服务器请求服务时只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单使得HTTP服务器的程序规模小因而通信速度很快。灵活HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后即断开连接。采用这种方式可以节省传输时间。无状态HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快。支持B/S及C/S模式。
3.1.2 HTTP请求之request 客户端通过HTTP协议进行请求时遵循一定的格式请看下面的请求报文格式由请求行、请求头、空行、请求体组成 而各部分组成如下所示
3.1.3 Http响应之response 在客户端发送请求后服务端进行响应将信息发送给客户端以实现功能服务报文格式如下包含状态行、响应头、空行、消息体 响应组成此处也不再赘述值得注意的是状态码它以清晰明确的数字告诉客户端本次请求的处理结果。 常见的状态码有 3.2 HTTPS HTTPS全称Hypertext Transfer Protocol over Secure Socket Layer是以安全为目标的HTTP通道简单讲是HTTP的安全版。即HTTP下加入SSL层HTTPS的安全基础是SSL因此加密的详细内容就需要SSL。
3.2.1 HTTPS的作用
内容加密建立一个信息安全通道来保证数据传输的安全身份认证确认网站的真实性数据完整性防止内容被第三方冒充或者篡改
3.2.2 HTTPS的劣势
对数据进行加解密决定了它比http慢
需要进行非对称的加解密且需要三次握手。首次连接比较慢点当然现在也有很多的优化。
出于安全考虑浏览器不会在本地保存HTTPS缓存。实际上只要在HTTP头中使用特定命令HTTPS是可以缓存的。Firefox默认只在内存中缓存HTTPS。但是只要头命令中有Cache-Control: Public缓存就会被写到硬盘上。 IE只要http头允许就可以缓存https内容缓存策略与是否使用HTTPS协议无关。
3.2.3 HTTPS和HTTP的区别
HTTPS协议需要到CA申请证书。HTTP是超文本传输协议信息是明文传输HTTPS则是具有安全性的ssl加密传输协议。HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。HTTP的连接很简单是无状态的HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议比HTTP协议安全。
下面就是HTTPS的整个架构现在的HTTPS基本都使用TLS了会更加安全。
4 FTP FTP 是File Transfer Protocol文件传输协议。用于ftp客户端和ftp服务器之间进行文本、文件传输的协议。与http的短连接不同FTP协议是一种基于socket的长连接。
4.1 FTP协议的原理 FTP协议实际上是工作在TCP/IP协议族的应用层其传输层协议是TCP协议。可以知道他的文件传输是可靠的。
FTP的工作流程大致分为四步
启动FTP。ftp的客户端启动一个socket连接到服务器。建立控制连接。客户端和服务器通过三次握手过程21端口建立连接用于传输ftp协议的命令。建立数据连接。客户端和服务器建立数据连接分为主动模式和被动模式用户文件的传输。关闭FTP。ftp客户端清空数据流并且关闭Socket。
4.2 FTP工作详解
1、FTP协议的工作流程中为什么有控制连接和数据连接
FTP协议的控制链接是用于客户端向服务器发送ftp的命令用的只要不想关闭FTP客户端就会一直保持该连接用户之后的命令交互。而数据连接则是区别于控制链接之外的用户传输文件用的socket连接当传输文件结束时就关闭连接。
2、数据连接的主动模式和被动模式 FTP的数据连接过程中的主动模式和被动模式是相对于FTP服务器来说都。 主动模式FTP客户端在客户端建立一个socket端口为B,并通过FTP控制连接的通道发送PORT命令告诉FTP服务器“客户端已经对B端口进行了监听”然后FTP服务器主动与FTP客户端的B端口建立连接。 被动模式FTP客户端通过FTP的控制连接的通道发送PASV命令告诉FTP服务器“我要建立数据连接”然后FTP服务器会随机启动一个端口X的监听并在返回信息中告诉FTP客户端“可以与X端口建立连接”最后FTP客户端主动与FTP服务器的X端口建立连接。
5 SMTP SMTP称为简单邮件传输协议Simple Mail Transfer Protocal目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下一是邮件从客户机传输到服务器二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议它监听25号端口用于接收用户的Mail请求并与远端Mail服务器建立SMTP连接。
5.1 工作机制 SMTP通常有两种工作模式。发送SMTP和接收SMTP。具体工作方式为发送SMTP在接收到用户的邮件请求后判断此邮件是否为本地邮件若是直接投送到用户的邮箱否则向DNS查询远端邮件服务器的MX记录并建立与远端接收SMTP之间的一个双向传送通道此后SMTP命令由发送SMTP发出由接收SMTP接收而应答则反方向传送。一旦传送通道建立SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收则返回OK应答如果不能接收到则发出拒绝接收应答但不中止整个邮件操作双方将如此反复多次。当接收者收到全部邮件后会接收到特别的序列如果接收者成功处理了邮件则返回OK应答。
5.2 连接和发送过程
建立TCP连接客户端发送HELO命令以标识发件人自己的身份然后客户端发送MAIL命令 服务器端正希望以OK作为响应表明准备接收客户端发送RCPT命令以标识该电子邮件的计划接收人可以有多个RCPT行服务器端则表示是否愿意为收件人接收邮件协商结束发送邮件用命令DATA发送以.表示结束输入内容一起发送出去结束此次发送用QUIT命令退出
最后附上常见的网络协议图解 返回面试宝典