圆圆网络 手游攻略 手游评测 TCP/IP协议是网络协议中的核心协议,包括三次握手和四次分手。

TCP/IP协议是网络协议中的核心协议,包括三次握手和四次分手。

时间:2024-09-16 12:00:00 来源:其他 浏览:0

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

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

TCP是一种面向连接(connection-oriented)、可靠的基于字节流的传输层通信协议。 TCP 将用户数据打包成消息段。发送后,它启动一个计时器。另一端确认收到的数据,对无序数据重新排序,并丢弃重复数据。 TCP的特点是:

TCP是面向连接的传输层协议。每个TCP 连接只能有两个端点。每个TCP 连接只能是点对点的。 TCP 提供可靠的传送服务。 TCP 提供全双工通信。数据在两个方向上独立传输。因此,连接的每一端都必须维护每个方向上传输数据的序列号。面向字节流。面向字节流的含义:虽然应用程序和TCP每次交互一个数据块,但TCP交给应用程序的数据只是一系列非结构化的字节流。

1、TCP头格式

(1)源端口:数据发起方的端口号,16位。 (2) 目的端口:数据接收方的端口号,16 位。 (3)序列号(Seq):用于解决数据通信中网络数据包重排序的问题,保证应用层接收到的数据不会因为网络上的传输问题而被重排序(TCP会使用这个序列号来拼接数据),32 位。 (4)确认号(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(Initial 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。意思是“我的客户端没有数据要发送给你,但是如果你还有数据要发送,你不用急着关闭Socket,可以继续发送数据。所以你先发送ACK”。

TCP/IP协议是网络协议中的核心协议,包括三次握手和四次分手。

第二次挥手:服务器收到FIN后,发回ACK(标志位ACK=1)。确认号为接收到的序列号加1,即X=X+1=2。序列号是收到的确认号=Z。意思是“我已经收到你的FIN请求,但我还没有准备好,请继续等待我的消息。”此时客户端进入FIN_WAIT状态,继续等待服务器端的FIN报文。

第三次挥手:当服务器确定数据已经发送完毕后,向客户端发送FIN报文,并关闭与客户端的连接。标志位FIN和ACK的值为1,序列号为Y=1,确认号为X=2。意思是告诉客户端,“好的,我已经发送完数据了,准备关闭连接了”。

第四次挥手:客户端收到服务器发送的FIN后,发回ACK确认(标志位ACK=1)。确认号为接收到的序列号加1,即Y+1=2。序列号是收到的确认号X=2。意思是“我的客户端知道可以关闭连接,但我仍然不信任网络。我担心服务器不知道要关闭它,所以在发送ACK后进入TIME_WAIT状态。如果服务器没有收到ACK,就可以重传。如果过了2MSL还没有收到回复,那就证明服务器已经正常关闭了”(在TIME_WAIT中。状态下,如果TCP 客户端发送的最后一个ACK 丢失,则TIME_WAIT 状态所需的时间取决于实现,典型值为30 秒、1 分钟和2 分钟。连接正式关闭,所有资源(包括端口号)被释放。

为什么关闭时会摇动(摇动)四次?因为当服务器收到客户端的SYN连接请求报文时,可以直接发送SYN+ACK报文。 ACK消息用于响应,SYN消息用于同步。但是关闭连接时,当服务器收到FIN报文时,很可能不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,‘你发的FIN报文我收到了’ 。只有我服务器端所有报文都发送完毕后,才能发送FIN报文,所以不能一起发送。因此,需要四步握手。

3、TCP报文抓取工具:Wireshark

在捕获过滤器中填写表达式:主机www.cnblogs.com和端口80(80相当于http)。当有多个TCP 流时,在显示过滤器中填写表达式: tcp.stream eq 0 filter 输出第一个TCP 流(包含完整的TCP 连接:三次握手和四次挥手)

每条记录有以下协议层(1)Frame:物理层数据帧概述(2)Ethernet II:数据链路层以太网帧头信息(3)Internet协议版本4: Internet层IP数据包头信息(4)传输控制协议:数据段传输层的头信息,这里是TCP (5) 超文本传输协议: 应用层的信息,这里是HTTP 协议

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

HTTP 是一种应用层协议,尽管HTTP/2 版本于2015 年推出并受到主要Web 浏览器和Web 服务器的支持。但目前使用最广泛的版本是HTTP/1.1。有关历史记录,请查看此处。其主要特点可概括如下:

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

另外,HTTP请求消息和响应消息都由起始行(对于请求消息来说,起始行是请求行,对于响应消息来说,起始行是状态行)、消息头(可选)和空行(仅限CRLF 行)、消息正文(可选)。这将在下面详细解释。

1、请求报文结构

报文中的数据全部采用ASCII编码,每个字段的长度不确定(除了末尾的CRLF外,不允许有单个CR或LF字符)。

2、请求报文样例

POST /搜索HTTP/1.1 Accept: 图像/gif、图像/x-xbitmap、图像/jpeg、图像/pjpeg、应用程序/vnd.ms-excel、应用程序/vnd.ms-powerpoint、应用程序/msword、应用程序/x-silverlight, application/x-shockwave-flash, */* Referer: http://www.google.cn/Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1; SV1;NET CLR 2.0.50727; TheWorld) Host: www.google.cn Connection: 保持活动Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=12615519093336 0 LM=1261551917:S=ybYcq2wpfefs4V9g; NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0 RnHcJU37y-FxlRugatx63JLv7CWMD6UB_O_r hl=zh -CNsource=hpq=domety

3、请求报文参数详解

请求方法

所有请求方法名称均采用大写字母。目前有9种:

注意安全:https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 幂等性:表示的操作最多只会处理一次,每次调用都会返回第一次调用的处理结果。关于HTTP请求GET和POST的区别(1)。提交形式:GET提交的数据会放在URL后面,用于分割URL并传输数据,参数相连,如EditPosts.aspx?name=test1id=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,不区分大小写。

TCP/IP协议是网络协议中的核心协议,包括三次握手和四次分手。

4、响应报文结构

正如您所看到的,响应消息结构和请求消息结构之间的唯一真正区别是在第一行中使用状态信息而不是请求信息。状态行通过提供状态代码来描述所请求的资源。

5、响应报文样例

HTTP/1.1 200 OKDate: 2005 年5 月23 日星期一22:38:34 GMTContent-Type: text/html; charset=UTF-8Content-Encoding: UTF-8Content-Length: 138Last-Modified: We d, 08 Jan 2003 23:11:55 GMTServer: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)ETag: '3f80f-1b6-3e1 cb03b'接受范围:字节连接: closehtmlhead title示例页面/title/headbody Hello World,这是一个非常简单的HTML文档。/body/html

6、响应报文参数详解

响应状态码

状态代码由三位数字组成,第一位数字定义相应的类别和五个可能的值。 1xx:指示信息——表示请求已收到,继续处理。 2xx:成功——表示请求已成功接收、理解并接受。 3xx:重定向--需要采取进一步操作才能完成请求。 4xx:客户端错误--请求有语法错误或无法满足请求。 5xx:服务器端错误——服务器未能满足合法请求。常见状态码:

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

例如,在IE中输入http://www.google.com。 HTTP服务器将返回304。IE获取Response中Location头的新URL并重新发送Request。 304 Not Modified:表示最后一个文档已被缓存。您可以继续使用它。 400 bad request - 请求格式错误。 401 未经授权- 未经授权。 403 禁止- 身份验证成功,但用户没有权限。 404 not found - 请求的资源不存在。 405 method not allowed - 不允许使用http 方法。 410 gone - 该url对应的资源现在不可用。 415 不支持的媒体类型- 请求类型错误。 422 无法处理的实体- 使用验证错误。 429 请求过多- 请求过多。 500 内部服务器错误:服务器上发生意外错误。 503 Server Unavailable:服务器当前无法处理客户端的请求,可能在一段时间后恢复正常。

其他状态码请参见:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

响应报头域

头字段指的是头中的Key,不区分大小写。

7、HTTP报文抓取工具

Wireshark、Fiddler、HttpWatch(需要与IE结合)、TelnetWireshark:在显示过滤器中填写表达式: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协议的无状态缺陷而做出的努力。后来出现的会话机制是客户端和服务器之间维护状态的另一种解决方案。具体来说,cookie机制采用的是在客户端维护状态的方案,而session机制采用的是在服务器端维护状态的方案。同时我们也看到,由于服务器端维护状态的方案也需要在客户端保存一个身份,所以session机制可能需要使用cookie机制来达到保存身份的目的,但事实上它还有其他选择。

Session

Session是一种用户信息存储机制,可以存储某个用户的浏览器以及通过其当前窗口打开的任何窗口的目标用户信息。通常人们认为只要浏览器关闭,session就会消失。其实,这是一种错误的认识。会话也是如此。除非程序通知服务器删除会话,否则服务器将保留它。由于关闭浏览器不会导致会话被删除,因此服务器被迫为会话设置一个过期时间。当客户端上次使用会话的时间超过此过期时间时,服务器可以认为客户端已停止活动。删除会话以节省存储空间。

(1)客户端第一次访问网站资源时,提交的请求不带SessionID(请求头没有Cookie头域信息)。 Web服务器会检查是否有SessionID。如果没有,就会创建一个SessionID,并根据Web程序自己的定义,在请求哪个资源时添加属于当前会话的信息(也可以为空)。该信息列表由SessionID来标识。然后将SessionID返回给客户端(通过响应消息头的Set-Cookie头域)。 (2)当客户端再次访问同一个网站时,会提交带有SessionID的请求(SessionID是通过Cookie头字段存储的)。服务器判断会话是否过期。如果没有过期,则可以查询属于当前会话的信息列表。如果失败,就会创建一个新的Session(生成新的SessionID),而原来的Session(包括带有该Session的信息列表)将会丢失,无法访问。

用户评论

陌離

TCP/IP协议真的很重要,三次握手和四次分手保证了数据传输的可靠性。

    有17位网友表示赞同!

日久见人心

三次握手和四次分手,网络通信的基础保障!

    有6位网友表示赞同!

她的风骚姿势我学不来

原来TCP/IP协议是这么复杂的,还有三次握手和四次分手!

    有12位网友表示赞同!

栀蓝

感谢这篇介绍,终于理解TCP/IP协议中三次握手和四次分手的含义了。

    有13位网友表示赞同!

大王派我来巡山!

TCP/IP协议,网络的基石,三次握手和四次分手,保证了可靠传输。

    有11位网友表示赞同!

殃樾晨

TCP/IP协议的核心,三次握手和四次分手,学习网络协议必备知识。

    有10位网友表示赞同!

瑾澜

第一次听说三次握手和四次分手,感觉很神奇!

    有20位网友表示赞同!

站上冰箱当高冷

网络协议中TCP/IP协议真的很重要,特别是三次握手和四次分手。

    有17位网友表示赞同!

巷雨优美回忆

理解了TCP/IP协议中的三次握手和四次分手,感觉对网络通信更了解了。

    有5位网友表示赞同!

信仰

三次握手和四次分手,保证了数据传输的可靠性和安全性。

    有6位网友表示赞同!

旧爱剩女

学习TCP/IP协议,从三次握手和四次分手开始吧!

    有11位网友表示赞同!

あ浅浅の嘚僾

TCP/IP协议中的三次握手和四次分手,网络通信的基础。

    有10位网友表示赞同!

矜暮

TCP/IP协议,网络协议中的核心,三次握手和四次分手不可或缺。

    有14位网友表示赞同!

失心疯i

三次握手和四次分手,让网络数据传输更加可靠。

    有7位网友表示赞同!

北染陌人

网络安全的基础,离不开TCP/IP协议的三次握手和四次分手。

    有8位网友表示赞同!

箜篌引

TCP/IP协议,网络世界的语言,三次握手和四次分手,保证了通信的稳定性。

    有10位网友表示赞同!

经典的对白

第一次深入了解了TCP/IP协议,三次握手和四次分手真是精妙的设计。

    有8位网友表示赞同!

♂你那刺眼的温柔

TCP/IP协议的三次握手和四次分手,保证了网络通信的可靠性,值得深入学习。

    有20位网友表示赞同!

一样剩余

TCP/IP协议中三次握手和四次分手,保证了网络数据的可靠传输。

    有7位网友表示赞同!

微信名字

网络协议的核心,TCP/IP协议,三次握手和四次分手,保证了网络通信的稳定性。

    有15位网友表示赞同!

标题:TCP/IP协议是网络协议中的核心协议,包括三次握手和四次分手。
链接:https://yyuanw.com/news/sypc/18924.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
绯红之境兑换码最新2021 礼包兑换码大全

绯红之境兑换码最新2021 礼包兑换码大全[多图],绯红之境兑换码怎么领取?绯红之境兑换码有哪些?绯红之境在今日

2024-09-16
妄想山海怎么加好友 加好友方法大全

妄想山海怎么加好友 加好友方法大全[多图],妄想山海添加好友功能在哪里?妄想山海添加好友的方法是什么?好友添

2024-09-16
三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法

三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法[多图],三国群英传7霸王再临怎么玩?三国群英传7霸王再临

2024-09-16
江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略

江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略[多图],江南百景图又见桃花村钓鱼怎么钓?又见桃花村钓

2024-09-16