协议_协议栈 - CSDN
协议 订阅
协议是一个汉语词汇,读音为xié yì,意思是共同计议,协商;经过谈判、协商而制定的共同承认、共同遵守的文件。《隋书·律历志中》等均有相关记载。 展开全文
协议是一个汉语词汇,读音为xié yì,意思是共同计议,协商;经过谈判、协商而制定的共同承认、共同遵守的文件。《隋书·律历志中》等均有相关记载。
信息
性    质
汉语词汇
外文名
protocol
意    义
共同计议,协商
词    性
名词
中文名
协议
协议释义
词目:协议拼音:xiéyì英文:protocol基本解释1. [agree on] [1]  共同计议;协商2. [agreement;accord;concord] 经过谈判、协商而制定的共同承认、共同遵守的文件详细解释1. 《隋书·律历志中》:“二人协议,共短 孝孙 。”宋·无名氏《儒林公议》卷上:“ 弼 (富弼)与韩琦协议,制以三年为率,不得复有干请。”田汉《卢沟桥》第四幕:“军长为着保持和平,还是委曲求全跟敌人协议,彼此撤兵。”2. 统一意见。宋·崔公度《感山赋》:“同德一心,齐力协议。”3. 经过谈判、协商而制定的共同承认、共同遵守的文件。《新华文摘》1981年第8期:“根据协议,停战线将以……实际控制线来划。”4. 泛指双方经协商取得的一致意见。《人民文学》1981年第8期:“她从知青点参军后,和父亲达成过协议,对自己的出身绝对保密。”法律范畴协议是指两个或两个以上实体为了开展某项活动,经过协商后双方达成的一致意见。
收起全文
精华内容
参与话题
  • 常见网络协议

    万次阅读 多人点赞 2019-03-26 13:32:50
    一、网络协议 二、TCP(Transmission Control Protocol,传输控制协议)       TCP头格式      TCP协议中的三次握手和四次挥手      TCP报文抓取工具三、...

    一、网络协议

    二、TCP(Transmission Control Protocol,传输控制协议)

          TCP头格式
          TCP协议中的三次握手和四次挥手
          TCP报文抓取工具
    三、HTTP(HyperText Transfer Protocol,超文本传输协议)

          请求报文结构
          请求报文样例
          请求报文参数详解
          响应报文结构
          响应报文样例
          响应报文参数详解
          HTTP报文抓取工具
          Session和Cookie
    四、相关资料

    ---------------------------------------------------------------------------------------------

    一、网络协议

           国际标准化组织(International Standard Organization,ISO)公布了开放系统互连参考模型(OSI/RM)。OSI/RM是一种分层的体系结构,参考模型共有7层。
    TCP/IP(Transmission Control Protocol/Internet Protocol)作为Internet的核心协议。它是个协议族,包含多种协议。
    分层的基本想法是每一层都在它的下层提供的服务基础上提供更高级的增值服务,而最高层提供能运行分布式应用程序的服务。

    发送请求的过程是从最顶层(应用层)出发,每一层负责封装属于自己的信息到请求中,最后将一整个请求发送给对方。
    接收请求的过程是从最底层(网络接口层)开始,每一层的协议负责解析属于自己的东西,比如网际层(IP)处理ip信息,传输层(TCP)处理点对点的端口,应用层(HTTP)处理Request或Response的Line\Header\Body。

     

    二、TCP(Transmission Control Protocol,传输控制协议)

          TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。
    TCP的特点有:

    • TCP是面向连接的运输层协议
    • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
    • TCP提供可靠交付的服务
    • TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。
    • 面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流。

    1、TCP头格式

    (1)   Source Port(源端口号):数据发起者的端口号,16bit。
    (2)   Destination Port(目的端口号):数据接收者的端口号,16bit。
    (3)   Sequence Number(顺序号码,Seq):用于在数据通信中解决网络包乱序(reordering)问题,以保证应用层接收到的数据不会因为网络上的传输问题而乱序(TCP会用这个顺序号码来拼接数据),32bit。
    (4)   Acknowledgment Number(确认号码,ack):是数据接收方期望收到发送方在下一个报文段的顺序号码(Seq),因此确认号码应当是上次已成功收到顺序号码(Seq)加1,32bit。
    (5)   Offset(TCP报文头长度):用于存储报文头中有多少个32bit(上图的一行),存储长度为4bit,最大可表示(2^3+2^2+2^1+1)*32bit=60bytes的报文头。最小取值5,5*32bit=20bytes。
    (6)   Reserved(保留):6bit, 均为0
    (7)   TCP Flags(TCP标志位)每个长度均为1bit
              CWR:压缩,TCP Flags值0x80。
              ECE:拥塞,0x40。
              URG:紧急,0x20。当URG=1时,表示报文段中有紧急数据,应尽快传送。
              ACK:确认,0x10。当ACK = 1时,代表这是一个确认的TCP包,取值0则不是确认包。
              PSH:推送,0x08。当发送端PSH=1时,接收端尽快的交付给应用进程。
              RST:复位,0x04。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。
              SYN:同步,0x02。在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
              FIN:终止,0x01。当FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。
    (8)   窗口:用来控制对方发送的数据量,通知发放已确定的发送窗口上限。
    (9)   检验和:该字段检验的范围包括头部和数据这两部分。由发端计算和存储,并由收端进行验证。
    (10) 紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。
    (11) TCP选项:长度可变,最长可达40字节

    备注:ISN(Inital Sequence Number):初始化Sequence Number,发生在建立连接时。

    2、TCP协议中的三次握手和四次挥手

    三次握手可以理解成:

    我打电话给你你没看到,一会之后你又打电话给我问有什么事,我再给你说我有什么什么事

    四次挥手可以理解成:

    我给你说我不想再要你送的东西了,你说不行啊还有很多没有送完(继续在送),(送完啦)你说已经把所有东西都送给我啦,我说我收到了那就结束吧-----------

     

    特别注意

    Seq:是发送方当前报文的顺序号码。
    ack:是发送方期望对方在下次返回报文中给回的Seq。

    建立连接需要三次握手

    第一次握手:客户端向服务端发送连接请求包,标志位SYN(同步序号)置为1,顺序号码为X=0。

    第二次握手:服务端收到客户端发过来报文,由SYN=1知道客户端要求建立联机,则为这次连接分配资源。并向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始顺序号码Y=0,将确认序号(ack)设置为上一次客户端发送过来的顺序号(Seq)加1,即X+1 = 0+1=1。

    第三次握手:客户端收到服务端发来的包后检查确认号码(ack)是否正确,即第一次发送的Seq加1(X+1=1)。以及标志位ACK是否为1。若正确,服务端再次发送确认包,ACK标志位为1,SYN标志位为0。确认号码(ack)=Y+1=0+1=1,发送顺序号码(Seq)为X+1=1。Server收到后确认号码值与ACK=1则连接建立成功,可以传送数据了。

    断开连接需要四次挥手

    提醒:中断连接端可以是Client端,也可以是Server端。只要将下面两角色互换即可。
    第一次挥手:客户端给服务端发送FIN报文,用来关闭客户端到服务端的数据传送。将标志位FIN和ACK置为1,顺序号码为X=1,确认号码为Z=1。意思是说”我Client端没有数据要发给你了,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK过来。”

    第二次挥手:服务端收到FIN后,发回一个ACK(标志位ACK=1),确认号码为收到的顺序号码加1,即X=X+1=2。顺序号码为收到的确认号码=Z。意思是说“你的FIN请求我收到了,但是我还没准备好,请继续你等我的消息" 这个时候客户端就进入FIN_WAIT状态,继续等待服务端的FIN报文。

    第三次挥手:当服务端确定数据已发送完成,则向客户端发送FIN报文,关闭与客户端的连接。标志位FIN和ACK置为1,顺序号码为Y=1,确认号码为X=2。意思是告诉Client端“好了,我这边数据发完了,准备好关闭连接了。”

    第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认号码为收到的顺序号码加1,即Y+1=2。顺序号码为收到的确认号码X=2。意思是“我Client端知道可以关闭连接了,但是我还是不相信网络,怕 Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。“(在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。)

    为什么关闭的时候却是四次挥(握)手?
    因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

    3、TCP报文抓取工具:Wireshark

    捕获过滤器中填入表达式:host www.cnblogs.com and port 80(80等效于http)
    有多个TCP流时在显示过滤器中填入表达式:tcp.stream eq 0 筛选出第一个TCP流(包含完整的一次TCP连接:三次握手和四次挥手)

     

    每条记录都有如下协议层
    (1) Frame:   物理层的数据帧概况
    (2)Ethernet II: 数据链路层以太网帧头部信息
    (3) Internet Protocol Version 4: 互联网层IP包头部信息
    (4)Transmission Control Protocol:  传输层的数据段头部信息,此处是TCP
    (5) Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

     

     

    三、HTTP(HyperText Transfer Protocol,超文本传输协议)

          HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。有关历史请查阅这里
    它的主要特点可概括如下:

    • 支持客户/服务器模式。
    • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决这个问题, Web程序引入了Cookie机制来维护状态。

    另外,HTTP请求报文和响应报文都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。将在下面详细讲解。

    1、请求报文结构

    报文中的数据都使用ASCII编码,各个字段的长度是不确定的(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

    2、请求报文样例

    复制代码
    复制代码
    POST /search HTTP/1.1  
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, 
    application/msword, application/x-silverlight, application/x-shockwave-flash, */*  
    Referer: http://www.google.cn/  
    Accept-Language: zh-cn  
    Accept-Encoding: gzip, deflate  
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)  
    Host: www.google.cn 
    Connection: Keep-Alive  
    Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; 
    NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
    FxlRugatx63JLv7CWMD6UB_O_r  
    

    hl=zh-CN&source=hp&q=domety

    复制代码
    复制代码

     

    3、请求报文参数详解

    请求方法

    所有请求方法名称全为大写,目前有9种:

    备注
    安全性:https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
    幂等性:表示的操作至多只会被处理一次,每次调用都将返回第一次调用时的处理结果。
    关于HTTP请求GET和POST的区别
    (1).提交形式:
       GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body中.
    (2).传输数据的大小:
       HTTP协议本身没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:
       GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
       因此对于GET提交时,传输数据就会受到URL长度的限制。
       POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
    (3).安全性:
        POST的安全性要比GET的安全性高,具有真正的Security的含义。而且通过GET提交数据,用户名和密码将明文出现在URL上,因为登录页面有可能被浏览器缓存,其他用户浏览历史纪录就可以拿到账号和密码了。

    请求报头域

    报头域指头部中的Key,且不分大小写。

    4、响应报文结构

    如所见,响应报文结构与请求报文结构唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。

    5、响应报文样例

    复制代码
    复制代码
    HTTP/1.1 200 OK
    Date: Mon, 23 May 2005 22:38:34 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Encoding: UTF-8
    Content-Length: 138
    Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
    ETag: "3f80f-1b6-3e1cb03b"
    Accept-Ranges: bytes
    Connection: close
    

    <html>
    <head>
    <title>An Example Page</title>
    </head>
    <body>
    Hello World, this is a very simple HTML document.
    </body>
    </html>

    复制代码
    复制代码

     

    6、响应报文参数详解

    响应状态码

    状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
    1xx:指示信息--表示请求已接收,继续处理。
    2xx:成功--表示请求已被成功接收、理解、接受。
    3xx:重定向--要完成请求必须进行更进一步的操作。
    4xx:客户端错误--请求有语法错误或请求无法实现。
    5xx:服务器端错误--服务器未能实现合法的请求。
    常用状态码:

    200 OK:成功返回状态,对应,GET,PUT,PATCH,DELETE。
    201 created  - 成功创建。
    302 Found:重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。

                     例如在IE中输入http://www.google.com. HTTP服务器会返回304, IE取到Response中Location header的新URL, 又重新发送了一 个 Request.
    304 Not Modified:代表上次的文档已经被缓存了, 还可以继续使用。
    400 bad request   - 请求格式错误。
    401 unauthorized   - 未授权。
    403 forbidden   - 鉴权成功,但是该用户没有权限。
    404 not found - 请求的资源不存在。
    405 method not allowed - 该http方法不被允许。
    410 gone - 这个url对应的资源现在不可用。
    415 unsupported media type - 请求类型错误。
    422 unprocessable entity - 校验错误时用。
    429 too many request - 请求过多。
    500 Internal Server Error:服务器发生了不可预期的错误。
    503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

    响应报头域

    报头域指头部中的Key,且不分大小写。

    7、HTTP报文抓取工具

    Wireshark、Fiddler、HttpWatch(需结合IE)、Telnet
    Wireshark:
    在显示过滤器中填入表达式:http and ip.addr == 42.121.252.58 and tcp.port == 80 过滤出http的响应和请求流程

     

     

    8、Session和Cookie

    说到HTTP,就不得不提Session和Cookie。但严格来说,Session和Cookie并不是http协议的一部分。由于HTTP协议设计原则是无状态的,但是近年来出现了种种需求,其中cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。后来出现的session机制则是又一种在客户端与服务器之间保持状态的解决方案。 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。

    Session

    Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。 
    通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间.

    (1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。
      而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。
    (2 )客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。

    Cookie

    保存SessionID的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。Cookie的命名方式类似于SessionID。有时Cookie被人为的禁止,所以出现了其他机制以便在Cookie被禁止时仍然能够把SessionID传递回服务器。这种技术叫做URL重写,就是把SessionID直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://www.wantsoft.com/index.asp;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 。
    另一种是作为查询字符串附加在URL后面,表现形式为http://www.wantsoft.com/index?js ... 99zWpBng!-145788764 。

     

    展开全文
  • 什么是协议

    千次阅读 2018-07-02 15:30:56
    什么是协议  计算机网络中有一个术语:协议。什么是协议协议的作用是什么?为了理解这一概念,我们可以通过和一些人类活动场景类比来理解。 场景一  如下图1左侧所示,该场景是我们生活中比较典型的交流...

    什么是协议

      计算机网络中有一个术语:协议。什么是协议,协议的作用是什么?为了理解这一概念,我们可以通过和一些人类活动场景类比来理解。

    场景一

      如下图1左侧所示,该场景是我们生活中比较典型的交流场景。
      人与人之间的交流,总是需要先由其中一方传递一个“我要和你交流”的信号,从而开始与另一方的交流。对应到图1的场景,信号就是第一个“你好”。然后如果对方如果有意向和你继续交流,就会返回给你一个“我愿意和你交流”的响应信息。图1的第二个“你好”就是对方返回的响应信息,表示我能够和对方继续交流。对于第一个“你好”的其它不同响应(例如“不要烦我!”,或“我不会说英语”,或其他不合适的回答)也许代表的就是一个勉强的或不能进行交流的含义。在此情况下,在图1场景中我们就无法询问对方时间。有时,问的问题根本得不到对方任何回答,此情况下,我们通常也会放弃向对方询问。在人类协议中,有我们发送的特定报文,也有我们根据接收到的应答报文或其他事件采取的动作(例如某个给定的时间内没有回答)。显然,发送和接收的报文,以及这些报文发送和接收或其他事件出现时所采取的动作,这些在人类协议中起到了核心作用。如果双方使用的协议不同(例如,一个人讲礼貌,另一个人不讲礼貌,或一个人明白时间的概念,另一个人却不明白),则双方就无法进行互动,因而也就不能完成有用的工作。同样的,网络中也遵循这一原则,即为了完成某一工作,要求两个(或多个)通信实体运行相同的协议
      
    人类协议与计算机网络协议
    图1 人类协议与计算机网络协议

    场景二

      第二个场景假设你正在大学课堂里上课(例如是计算机网络课程)。教师正在唠唠叨叨地讲述协议,而你却对某些地方困惑不解。此时,教师停下来问:“同学们有问题吗?”(教师发送出一个报文,该报文所有没有睡觉的学生接收到了)你举起了手(向教师发送了一个隐含的报文),这位教师微笑地示意你说:“请讲……”,接着你就问了自己不懂的地方(即向教师传输了你的报文)。教师听取了你的问题(即接收了你的问题报文)并加以回答(向你传输了回答报文)。这个过程中,我们再一次看到了报文的发送和接收,以及这些报文发送和接收时所采取的一系列约定俗成的动作,这些是这个“提问与回答”协议的核心。

    协议的概念

      网络协议类似于人类协议,除了交换报文和采取动作的实体是某些设备的硬件或软件组件(这些设备可以是计算机、智能手机、平板电脑、路由器或其他具有网络能力的设备)。在因特网中,凡是涉及两个或多个远程通信实体的所有活动都受协议的制约。例如,在两台物理连接的计算机中,硬件实现的协议控制了在两块网络接口卡间的“线上”的比特流;在端系统中,拥塞控制协议控制了在发送方和接收方之间传输的分组发送的速率。
      以网页访问这一场景为例,如图1右侧所示。当你向一个Web服务器发出请求时(在浏览器中输入一个网页的URL并回车),你的计算机将向改Web服务器发送一条连接请求报文,并等待回答。该Web服务器最终接收到连接请求报文,并返回一条连接响应报文。得知请求改Web文档正常后,计算机则在一条GET报文中发送要从这台Web服务器上取回的网页名字。最后,Web服务器向计算机返回该Web网页(文件)。
      从以上的人类场景和网络例子中可知,报文的交换以及发送和接收这些报文时所采取的动作是定义一个协议的关键元素:
      

    一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送(或接收报文或其他事件)所采取的行动。

      计算机网络广泛地使用了协议,不同的协议用于完成不同的通信任务。

    参考书籍:《计算机网络自顶向下方法第六版》

    展开全文
  • 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ARP工作过程及工作原理解析 ICMP知识解析 ping命令使用...
  • 一文搞懂什么是TCP/IP协议

    万次阅读 多人点赞 2020-05-06 15:41:03
    什么是TCP/IP协议? 计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件,操作系统之间的...

    什么是TCP/IP协议?

    计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件,操作系统之间的通信,所有这一切都需要一种规则.而我们就将这种规则称为协议 (protocol).

    image-20191027150025587

    也就是说,TCP/IP 是互联网相关各类协议族的总称。

    TCP/IP 的分层管理

    TCP/IP协议里最重要的一点就是分层。TCP/IP协议族按层次分别为 应用层,传输层,网络层,数据链路层,物理层。当然也有按不同的模型分为4层或者7层的。

    为什么要分层呢?

    把 TCP/IP 协议分层之后,如果后期某个地方设计修改,那么就无需全部替换,只需要将变动的层替换。而且从设计上来说,也变得简单了。处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清对方在地球上哪个地方,怎样传输,如果确保到达率等问题。

    image-20191027150352733

    如上图所示,我们将TCP/IP分为5层,越靠下越接近硬件。我们由下到上来了解一下这些分层。

    1. 物理层

      该层负责 比特流在节点之间的传输,即负责物理传输,这一层的协议既与链路有关,也与传输的介质有关。通俗来说就是把计算机连接起来的物理手段。

    2. 数据链路层

      控制网络层与物理层之间的通信,主要功能是保证物理线路上进行可靠的数据传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据结构的结构包,他不仅包含原始数据,还包含发送方和接收方的物理地址以及纠错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。如果在传达数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。

    3. 网络层

      决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权,网络拥塞程度,服务质量以及可选路由的花费等来决定从网络中的A节点到B节点的最佳途径。即建立主机到主机的通信。

    4. 传输层

      该层为两台主机上的应用程序提供端到端的通信。传输层有两个传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。其中,TCP是一个可靠的面向连接的协议,udp是不可靠的或者说无连接的协议

    5. 应用层

      应用程序收到传输层的数据后,接下来就要进行解读。解读必须事先规定好格式,而应用层就是规定应用程序的数据格式。主要的协议有:HTTP.FTP,Telent等。

    TCP与UDP

    TCP/UDP 都是传输层协议,但是两者具有不同的特效,同时也具有不同的应用场景。

    image-20191027212512703

    面向报文

    面向报文的传输方式是应用层交给UDP多长的报文,UDP发送多长的报文,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。

    面向字节流

    虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应该程序传送的数据块太长,TCP就可以把它划分短一些再传送。

    TCP的三次握手与四次挥手

    具体过程如下:

    • 第一次握手:建立连接。客户端发送连接请求报文段,并将syn(标记位)设置为1,Squence Number(数据包序号)(seq)为x,接下来等待服务端确认,客户端进入SYN_SENT状态(请求连接);

    • 第二次握手:服务端收到客户端的 SYN 报文段,对 SYN 报文段进行确认,设置 ack(确认号)为 x+1(即seq+1 ; 同时自己还要发送 SYN 请求信息,将 SYN 设置为1, seq为 y。服务端将上述所有信息放到 SYN+ACK 报文段中,一并发送给客户端,此时服务器进入 SYN_RECV状态。

      SYN_RECV是指,服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。再进一步接收到客户端的ACK就进入ESTABLISHED状态。

    • 第三次握手:客户端收到服务端的 SYN+ACK(确认符) 报文段;然后将 ACK 设置为 y+1,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED(连接成功)状态,完成TCP 的三次握手。

    上面的解释可能有点不好理解,用《图解HTTP》中的一副插图 帮助大家。

    img

    当客户端和服务端通过三次握手建立了 TCP 连接以后,当数据传送完毕,断开连接就需要进行TCP的四次挥手。其四次挥手如下所示:

    • 第一次挥手

      客户端设置seq和 ACK ,向服务器发送一个 FIN(终结)报文段。此时,客户端进入 FIN_WAIT_1 状态,表示客户端没有数据要发送给服务端了。

    • 第二次挥手

      服务端收到了客户端发送的 FIN 报文段,向客户端回了一个 ACK 报文段。

    • 第三次挥手

      服务端向客户端发送FIN 报文段,请求关闭连接,同时服务端进入 LAST_ACK 状态。

    • 第四次挥手

      客户端收到服务端发送的 FIN 报文段后,向服务端发送 ACK 报文段,然后客户端进入 TIME_WAIT 状态。服务端收到客户端的 ACK 报文段以后,就关闭连接。此时,客户端等待 2MSL(指一个片段在网络中最大的存活时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端就可以关闭连接了。

    最后再看一下完整的过程:

    img

    如果有大量的连接,每次在连接,关闭都要经历三次握手,四次挥手,这显然会造成性能低下。因此。Http 有一种叫做 长连接(keepalive connections) 的机制。它可以在传输数据后仍保持连接,当客户端需要再次获取数据时,直接使用刚刚空闲下来的连接而无需再次握手。

    img

    一些问题汇总:

    1. 为什么要三次握手?

    为了防止已失效的连接请求报文突然又传送到了服务端,因为产生错误。

    具体解释: “已失效的连接请求报文段”产生情况:

    client 发出的第一个连接请求报文段并没有丢失,而是在某个网络节点长时间滞留,因此导致延误到连接释放以后的某个时间才到达 service。如果没有三次握手,那么此时server收到此失效的连接请求报文段,就误认为是 client再次发出的一个新的连接请求,于是向 client 发出确认报文段,同意建立连接,而此时 client 并没有发出建立连接的情况,因此并不会理会服务端的响应,而service将会一直等待client发送数据,因此就会导致这条连接线路白白浪费。

    如果此时变成两次挥手行不行?

    这个时候需要明白全双工与半双工,再进行回答。比如:

    • 第一次握手: A给B打电话说,你可以听到我说话吗?
    • 第二次握手: B收到了A的信息,然后对A说: 我可以听得到你说话啊,你能听得到我说话吗?
    • 第三次握手: A收到了B的信息,然后说可以的,我要给你发信息啦!

    在三次握手之后,A和B都能确定这么一件事: 我说的话,你能听到; 你说的话,我也能听到。 这样,就可以开始正常通信了,如果是两次,那将无法确定。

    2. 为什么要四次挥手?

    TCP 协议是一种面向连接,可靠,基于字节流的传输层通信协议。TCP 是全双工模式(同一时刻可以同时发送和接收),这就意味着,当主机1发出 FIN 报文段时,只是表示主机1已结没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回 ACK报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会中断这次TCP连接。

    3.为什么要等待 2MSL

    MSL:报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间

    原因如下:

    • 保证TCP协议的全双工连接能够可靠关闭
    • 保证这次连接的重复数据从网络中消息

    第一点: 如果主机1直接 关闭,由于IP协议的不可靠性或者其他网络原因,导致主机2没有收到主机1最后回复的 ACK。那么主机2就会在超时之后继续发送 FIN,此时由于主机1已经关闭,就找不到与重发的 FIN 对应的连接。所以,主机1 不是直接进入 关闭,而是TIME_WAIT 状态。当再次收到 FIN 的时候,能够保证对方收到 ACK ,最后正确关闭连接。

    第二点:如果主机1直接 关闭,然后又再向主机 2 发起一个新连接,我们不能保证这个新连接与刚才关闭的连接端口是不同的。也就是说有可能新连接和老连接的端口号是相同的。一般来说不会发生什么问题,但还是有特殊情况出现;假设新连接和已经关闭的老连接端口号是一样的,如果前一次连接的某些数据仍然滞留在网络中( Lost Duplicate ),那些延迟数据在建立新连接之后才到达主机2,由于新连接和老连接的端口号是一样的,TCP 协议就认为哪个延迟的数据时属于新连接的,这样就和真正的新连接的数据包发生混淆了。所以TCP连接要在 TIME_WAIT 状态等待两倍 MSL ,保证本次连接的所有数据都从网络中消失。




    参考内容

    <图解HTTP>
    <Android进阶之光-网络篇>
    知乎-TCP 为什么是三次握手,而不是两次或四次?

    展开全文
  • HTTP协议其实就是这么简单

    万次阅读 多人点赞 2018-05-03 11:49:02
    一、HTTP简介1.http协议介绍HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是基于TCP/IP通信协议来传递数据(HTML ...

    一、HTTP简介

    1.http协议介绍

    1. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
    2. HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
    3. HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图http/https
    4. HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
    5. HTTP默认的端口号为80,HTTPS的端口号为443。

    2.http协议工作流程

    一次HTTP操作称为一个事务,其工作过程大概如下:

    1. 用户在浏览器中键入需要访问网页的URL或者点击某个网页中链接;
    2. 浏览器根据URL中的域名,通过DNS解析出目标网页的IP地址;
    浏览器请求这个页面:http://hackr.ip/index.html
    在这一步,需要域名系统DNS解析域名hackr.ip,得主机的IP地址 20X.189.105.112。
    然后将上面结合本机自己的信息,封装成一个http请求数据包
    
    1. 在HTTP开始工作前,客户端首先会通过TCP/IP协议来和服务端建立链接(TCP三次握手)
    2. 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
    3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
    4. 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

    http协议和tcp协议

    2.1 短连接

    短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接

    如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽。

    短连接

    2.2 长链接

    长链接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

    长链接操作步骤:建立连接——数据传输...(保持连接)...数据传输——关闭连接

    长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间

    长链接分为 without pipelining 和 with pipelining,下图中是without pipelining,客户端只在收到前一个请求的响应后,才发出新的请求。

    长链接

    2.3 管线化

    下图是with pipelining,每次建立链接后无需等待请求回来就可以发送下一个请求

    管线化

    3. Http请求报文

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

    请求行(request line)、请求头部(header)、请求体组成,下图给出了请求报文的一般格式。

    HTTP请求

    请求行:
        方法:
            GET 获取资源
            POST 向服务器端发送数据,传输实体主体
            PUT 传输文件
            HEAD 获取报文首部
            DELETE 删除文件
            OPTIONS 询问支持的方法
            TRACE 追踪路径
        协议/版本号
        URL
        
    请求头:
        通用首部(General Header)
        请求首部(Request Header)
        响应首部(Response Header)
        实体首部(Entity Header Fields)
        
    请求体
    

    请求报文拆解:

    http请求报文

    3.1 get请求

    get请求

    3.2 post请求

    post请求

    4. Http响应报文

    HTTP响应组成:响应行、响应头、响应体。

    http响应

    响应行
        (HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
    响应头
        Date:生成响应的日期和时间;
        Content-Type:指定了MIME类型的HTML(text/html),编码类型是ISO-8859-1
    响应体
    

    响应报文拆解:

    http响应报文

    5. Http状态码

    类别 原因
    1XX Informational(信息性状态码)
    2XX Success(成功状态码)
    3XX Redirection(重定向)
    4XX Client Error(客户端错误状态码)
    5XX Server Error(服务器错误状态吗)

    5.1 2XX 成功

    200(OK 客户端发过来的数据被正常处理
    204(Not Content 正常响应,没有实体
    206(Partial Content 范围请求,返回部分数据,响应报文中由Content-Range指定实体内容
    

    5.2 3XX 重定向

    301(Moved Permanently) 永久重定向
    302(Found) 临时重定向,规范要求,方法名不变,但是都会改变
    303(See Other) 和302类似,但必须用GET方法
    304(Not Modified) 状态未改变, 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
    307(Temporary Redirect) 临时重定向,不该改变请求方法
    

    5.3 4XX 客户端错误

    400(Bad Request) 请求报文语法错误
    401 (unauthorized) 需要认证
    403(Forbidden) 服务器拒绝访问对应的资源
    404(Not Found) 服务器上无法找到资源
    

    5.4 5XX 服务器端错误

    500(Internal Server Error)服务器故障
    503(Service Unavailable) 服务器处于超负载或正在停机维护
    

    6. 首部

    6.1 通用首部字段

    首部字段名 说明
    Cache-Control 控制缓存行为
    Connection 链接的管理
    Date 报文日期
    Pragma 报文指令
    Trailer 报文尾部的首部
    Trasfer-Encoding 指定报文主体的传输编码方式
    Upgrade 升级为其他协议
    Via 代理服务器信息
    Warning 错误通知

    6.2 请求首部字段

    首部字段名 说明
    Accept 用户代理可处理的媒体类型
    Accept-Charset 优先的字符集
    Accept-Encoding 优先的编码
    Accept-Langulage 优先的语言
    Authorization Web认证信息
    Expect 期待服务器的特定行为
    From 用户的电子邮箱地址
    Host 请求资源所在的服务器
    If-Match 比较实体标记
    If-Modified-Since 比较资源的更新时间
    If-None-Match 比较实体标记
    If-Range 资源未更新时发送实体Byte的范围请求
    If-Unmodified-Since 比较资源的更新时间(和If-Modified-Since相反)
    Max-Forwards 最大传输跳数
    Proxy-Authorization 代理服务器需要客户端认证
    Range 实体字节范围请求
    Referer 请求中的URI的原始获取方
    TE 传输编码的优先级
    User-Agent HTTP客户端程序的信息

    6.3 响应首部字段

    首部字段名 说明
    Accept-Ranges 是否接受字节范围
    Age 资源的创建时间
    ETag 资源的匹配信息
    Location 客户端重定向至指定的URI
    Proxy-Authenticate 代理服务器对客户端的认证信息
    Retry-After 再次发送请求的时机
    Server 服务器的信息
    Vary 代理服务器缓存的管理信息
    www-Authenticate 服务器对客户端的认证

    6.4 实体首部字段

    首部字段名 说明
    Allow 资源可支持的HTTP方法
    Content-Encoding 实体的编码方式
    Content-Language 实体的自然语言
    Content-Length 实体的内容大小(字节为单位)
    Content-Location 替代对应资源的URI
    Content-MD5 实体的报文摘要
    Content-Range 实体的位置范围
    Content-Type 实体主体的媒体类型
    Expires 实体过期时间
    Last-Modified 资源的最后修改时间

    7、HTTP中的重定向和请求转发的区别

    本质区别

    解释一  

    一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:

    转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

    重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器--》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

    解释二

    重定向,其实是两次request, 
    第一次,客户端request   A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。


    请求转发
    是服务器内部把对一个request/response的处理权,移交给另外一个 
    对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。
     传输的信息不会丢失。

    解释三

    假设你去办理某个执照, 

    重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。 

    转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。


    参考:

    1. HTTP简介
    2. HTTP协议详解
    3. HTTP
    4. HTTP工作过程

    展开全文
  • TCP/IP协议简述

    万次阅读 多人点赞 2018-07-22 15:23:50
    TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都...
  • 网络协议概述

    2017-07-03 11:13:40
    这篇文章主要描述TCP/IP模型和OSI...标准的OSI模型和TCP/IP模型之间的对应关系和相关的协议是这样的 下面将对TCP/IP中的层做介绍: 对于TCP/IP中的各个模型的解释是这样的 (1)物理层 所谓的物理层,是指光纤、电
  • 简述网络协议

    2016-09-11 10:39:17
    这张图表明了协议之间的关系. 以下内容均来自csdn 和 chinaunix 我们通过以上图片来了解一些概念的东西所谓的协议就是双方进行数据传输的一种格式, 或者说标准, 或者说规则. 整个网络中使用的协议有很多,所幸的是每...
  • 网络协议 1- 概述

    2018-10-29 14:34:08
    互联网世界中,网络协议的重要性不言而喻。很多人都知道,网络协议中的五层模型或者七层模型,这些在操作系统中,那都是“必考题”。上学的时候,无论是死记硬背,还是各种小抄,总得把下面这个图记下来。踏入工作,...
  • 网络协议简述

    2020-05-03 16:41:18
    ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射。 ARQ:(Automatic Repeat reQuest)自动重传协议,包括停止等待ARQ, 后退N帧ARQ,滑动窗口ARQ 传输层 ARQ(见数据链路层) ...
  • TFTP协议

    千次阅读 2018-10-06 13:54:01
    因此对表格使用了图片方式(最后一个表格未使用图片格式,大家可以看看效果),CSDN博客编辑器上传图片十分不人性化(直接复制图片是不显示的),因此本文省略了不是太重要的图片,包括TFTP协议举例9幅图片(可以...
  • HTTP协议详解

    万次阅读 多人点赞 2008-10-04 23:10:00
    Author :Jeffrey My Blog:http://blog.csdn.net/gueter/ 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地...
  • TCP/IP五层协议体系结构的各层功能

    千次阅读 2019-08-02 14:12:07
    目录:五层协议体系结构的各层功能 1 第五层——应用层(application layer) 2. 第四层——运输层(transport layer) 3. 第三层——网络层(network layer) 4. 第二层——数据链路层(data link layer) 5. 第一层...
  • 目录 文章目录目录对称加密和非对称加密SSL/TLSTLS 1.3 更快的访问速度TLS 1.3 更强的安全性OpenSSL 对称加密和非对称加密 加密的过程就是把 “明文” 变成 “密文” 的过程。反之,解密的过程,就是把 “密文” ...
  • 网络协议、socket、webSocket

    万次阅读 多人点赞 2019-07-31 19:20:28
    一、网络协议 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 1、OSI七层协议 OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,从上到下分别...
  • OSI七层协议大白话解读

    万次阅读 多人点赞 2019-03-05 23:07:13
    互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白...
  • 网络协议 -- IP协议

    万次阅读 2018-11-25 14:15:52
    IP协议是TCP/IP协议族中最核心的协议。所有的TCP、UDP、ICMP、IGMP数据都以IP数据报的格式传输。 IP协议是不可靠、无连接的: 不可靠表示IP协议不能保证IP数据报能成功的到达目的地。IP仅提供传输服务,任何可靠...
  • 五分钟读懂TCP 协议——TCP协议简介

    万次阅读 多人点赞 2017-06-11 23:48:03
    (图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。(图片说明:以太网协议...
  • 每一层都有对应的协议,以保证计算机之间能在网络中通信。而HTTP协议则是工作在应用层,为用户浏览Web页面提供支持。这里以一张图来简要说明浏览一个Web页面的过程。 整个过程可以这样概述:域...
  • Http协议与TCP协议简单理解

    万次阅读 多人点赞 2016-09-05 09:00:09
    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。 TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从...
1 2 3 4 5 ... 20
收藏数 1,984,037
精华内容 793,614
关键字:

协议