tcp四次挥手

http & https & http2.0

随声附和 提交于 2019-11-26 14:44:54
一.http状态码 1xx(信息性状态码,接受的请求正在处理) 2xx(成功状态码,请求正常处理完毕) 200 OK 204 No Content:请求成功但没有资源返回 206 Partial Content:范围请求 3xx(重定向状态码,需要进行附加操作以完成请求) 301 Moved Permanently:永久性重定向() 302 Found:临时性重定向 303 See Other:同302,用GET获取资源 304 Not Modified: 内容没有改,响应不包含主体部分 (请求头If-None-Match对应响应头Etag,请求头If-Modified-Since对应响应头Last-Modified) 307 Temporary Redirect:同302 4xx(客户端错误状态码,服务器无法处理请求) 400 Bad Request:请求报文存在语法错误 401 Unanuthority:请求需要通过认证,若之前以请求过1次,表示认证失败 403 Forbidden:不允许访问 404 Not Found:服务器无请求资源 5xx(服务端错误状态码,服务器处理请求出错) 500 Internal Server Error:服务器在执行请求是发生错误 503 Service Unavailable:现在在忙无法处理请求

TCP三次握手和四次挥手

早过忘川 提交于 2019-11-26 14:24:33
常用的熟知端口号 TCP的概述 建立连接,每一个TCP连接都有连个端点,这种端点—>套接字(socket)。 套接字 :IP+TCP协议+端口----可以标识主机进程。 例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。 TCP报文首部 TCP报文是TCP层传输的数据单元,也叫报文段。 端口号:用来表示同一台计算机的不同进程。 各站2字节 1)源端口:标识报文的返回地址。 2)目的端口:端口指明接收方计算机上的应用程序接口。 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。 序号和确认号: 序号是本报文段发送数据组的第一个字节的序号。 确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。 数据偏移/首部长度:4bits。 因为首部含有可选字段,所以TCP报文长度是不确定的。爆头不包含任何可选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为十进制为15,15 32/8=60(15 4字节)**,所以报文头最大为60字节。**首部长度叫数据偏移,是因为首部长度实际上只是了数据区的报文段中的起始偏移值。 保留:默认0,为将来定义新的用途保留。 控制位

TCP异常终止(reset报文)

偶尔善良 提交于 2019-11-26 14:23:04
TCP 异常终止( reset 报文) TCP 的异常终止是相对于正常释放 TCP 连接的过程而言的,我们都知道, TCP 连接的建立是通过三次握手完成的,而 TCP 正常释放连接是通过四次挥手来完成,但是有些情况下, TCP 在交互的过程中会出现一些意想不到的情况,导致 TCP 无法按照正常的四次挥手来释放连接,如果此时不通过其他的方式来释放 TCP 连接的话,这个 TCP 连接将会一直存在,占用系统的部分资源。在这种情况下,我们就需要有一种能够释放 TCP 连接的机制,这种机制就是 TCP 的 reset 报文。 reset 报文是指 TCP 报头的标志字段中的 reset 位置一的报文,如下图所示: TCP 异常终止的常见情形 我们在实际的工作环境中,导致某一方发送 reset 报文的情形主要有以下几种: 1 ,客户端尝试与服务器未对外提供服务的端口建立 TCP 连接,服务器将会直接向客户端发送 reset 报文。 2 ,客户端和服务器的某一方在交互的过程中发生异常(如程序崩溃等),该方系统将向对端发送 TCP reset 报文,告之对方释放相关的 TCP 连接,如下图所示: 3 ,接收端收到 TCP 报文,但是发现该 TCP 的报文,并不在其已建立的 TCP 连接列表内,则其直接向对端发送 reset 报文,如下图所示: 4

【网络编程】 -- 2019-08-08 18:01:52

给你一囗甜甜゛ 提交于 2019-11-26 13:51:33
原文: http://106.13.73.98/__/1/ 目录 1.socket层 2.理解socket 3.套接字的发展史 4.网络基础 5.socket基本操作 6.socket进阶 7.黏包 8.解决黏包 8.socket的更多方法 1.socket层 ![在这里插入图片描述](http://106.13.73.98/media/ai/2019-03/5ccf086a-baa7-4268-a9f9-a50fb74136b7.png) 2.理解socket socket是应用层与TCP/IP协议族的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个面膜,它把复杂的TCP/IP协议族隐藏在socket接口后面,对于用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 3.套接字的发展史 套接字起源于20世纪70年代 加利福尼亚 大学伯克利分校版本的Unix,即人们所说的BSD Unix。因此,有时人们也把套接字称为“伯克利套接字”或“BSD套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也被称为进程间通讯或IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 基于文件类型的套接字家族:AF_UNIX unix下一切皆文件,基于文件的套接字调用的就是底层的文件系统来获取数据

网络编程

匆匆过客 提交于 2019-11-26 09:27:26
网络编程 1.0 引子 假如有两个脚本, foo.py ,, bar.py ,分别运行,都可以正常运行。但是现在想从两个程序之间传递一个数据 同一台电脑 创建一个文件。将foo.py的数据读入文件中,bar.py从文件中读取数据。 不同电脑间 2.0 软件的开发架构 2.1 c/s架构 c/s 即Client和Server ---->客户端和服务器端架构 2.2 B/s架构 B/S 即Browser和Server---->浏览器端和服务器端架构 3.0 什么是网络 网络就是一种辅助双方或者多方能够连接在一起的工具。 伴随着网络发展,人们使用了很多通信方法,有些已不再使用,现在使用最广泛的是------ TCP/IP 协议 (Transmission Control Protocol/Internet Protocol) TCP/IP是标准协议,它可以使世界范围内的计算机通过Internet或本地网络通信。 TCP/IP事实上是一些协议(protocols)的合集。当前大多数使用中的通信都使用TCP协议。 Internet是在一些共享的线路上发送数据的。例如:在您的计算机上也许同时运行着几个应用程序,如Web浏览器、通讯软件等程序,而您只须通过一条单一的线路来连接互联网。上面所有的程序都共享这个连接,简单地说,用户往往不会觉察到这个共享的发生。 3.1 目的 使用网络把多方连在一起

TCP状态转换图

℡╲_俬逩灬. 提交于 2019-11-26 04:00:18
如下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。 这里进一步探究TCP三路握手和四次挥手过程中的状态变迁以及数据传输过程。先看TCP状态状态转换图。 上半部分是TCP三路握手过程的状态变迁,下半部分是TCP四次挥手过程的状态变迁。 CLOSED:起始点,在超时或者连接关闭时候进入此状态,这并不是一个真正的状态,而是这个状态图的假想起点和终点。LISTEN:服务器端等待连接的状态。服务器经过 socket,bind,listen 函数之后进入此状态,开始监听客户端发过来的连接请求。此称为应用程序被动打开(等到客户端连接请求)。SYN_SENT:第一次握手发生阶段,客户端发起连接。客户端调用 connect,发送 SYN 给服务器端,然后进入 SYN_SENT 状态,等待服务器端确认(三次握手中的第二个报文)。如果服务器端不能连接,则直接进入CLOSED状态。SYN_RCVD:第二次握手发生阶段,跟 3 对应,这里是服务器端接收到了客户端的 SYN,此时服务器由 LISTEN 进入 SYN_RCVD状态,同时服务器端回应一个 ACK,然后再发送一个 SYN 即 SYN+ACK 给客户端。状态图中还描绘了这样一种情况,当客户端在发送 SYN 的同时也收到服务器端的 SYN请求,即两个同时发起连接请求,那么客户端就会从

TCP三次握手和四次挥手以及原因

时光总嘲笑我的痴心妄想 提交于 2019-11-26 00:30:00
TCP三次握手和四次挥手以及11种状态 1、三次握手 置位概念:根据TCP的包头字段,存在3个重要的标识ACK、SYN、FIN ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连接 三次握手过程说明: 1、由客户端发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且将报文中的SYN字段置为1,表示需要建立TCP连接。(SYN=1,seq=x,x为随机生成数值) 2、由服务端回复客户端发送的TCP连接请求报文,其中包含seq序列号,是由回复端随机生成的,并且将SYN置为1,而且会产生ACK字段,ACK字段数值是在客户端发送过来的序列号seq的基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP建立请求已得到验证。(SYN=1,ACK=x+1,seq=y,y为随机生成数值)这里的ack加1可以理解为是确认和谁建立连接。 3、客户端收到服务端发送的TCP建立验证请求后,会使自己的序列号加1表示,并且再次回复ACK验证请求,在服务端发过来的seq上加1进行回复。(SYN=1,ACK=y+1,seq=x+1) 为什么TCP客户端最后还要发送一次确认呢? 一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。 如果使用的是两次握手建立连接,假设有这样一种场景

20170906_我是如何讲清楚TCP的三次握手和四次挥手的

和自甴很熟 提交于 2019-11-26 00:29:39
20170906_我是如何讲清楚TCP的三次握手和四次挥手的 参考博客:http://blog.csdn.net/cmm0401/article/details/68482799 20170330_请说出TCP连接的三次握手和TCP关闭的四次握手 SYN 包:建立连接请求的包 FIN 包:切断TCP 连接的包 ACK 包:针对SYN 包和FIN 包的确认应答包 1、TCP 的特点及其目的: (1)TCP 是通过 校验和、序列号、确认应答信号、重发机制、连接管理以及窗口控制、流量控制、拥塞控制等许多机制 来实现数据的可靠性传输。 (2) 在TCP 中,当发送端的数据达到接收端主机的时候,接收端主机会返回一个已收到消息的通知,这个通知被称之为 “确认应答信号”ACK 。 (3)TCP 通过肯定的确认应答信号ACK 实现可靠的数据传输。当发送端将数据发出之后便会等待接收端主机的确认应答信号。如果有确认应答,这说明数据已经成功到达了接收端,否则的话,数据包丢失的可能性很大。 ******************************************************************************************************* ********************************************************

通过JAVA 代码来看TCP的3次握手和4次挥手

风流意气都作罢 提交于 2019-11-26 00:29:27
之前一直没弄明白我使用JAVA API进行socket编程的时候,到底调用哪个API的时候,TCP底层进行了3次握手,调用哪个API的时候,TCP底层进行了4次握手。网上查阅一番资料后没找到想要的,于是自己利用周末时间搞搞明白,记录一下,下次好查阅! 阅读提前 1.TCP3次握手和4次挥手理解 传送门: TCP3次握手连接协议和4次握手断开连接协议 TCP三次握手连接及四次挥手断开过程 理解TCP三次握手/四次断开的必要性 2.NIO(IO)相关知识、socket相关知识 此次使用NIO 做例子(原阻塞方式同理) 先上代码 服务端代码 package com.mtl.day20180825; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.util.Iterator; import java.util.Set

TCP三次握手和四次挥手简述

我只是一个虾纸丫 提交于 2019-11-26 00:29:11
三次握手、四次挥手 三次握手:客户端与服务端传输数据 第一次:客户端向服务端发送消息,此信息主要确定的是服务端是否处于运行状态,传输内容包括(标识为0,协议为syn) 第二次:服务端向客户端发送消息,此信息主要是告诉客户端,服务器处于运行状态,传输内容包括(标识为0+1,协议为syn+ack)当客户端接收到此消息后,客户端与服务端就处于连接状态 第三次:客户端向服务端发送数据包,传输内容包括(ack,标识为1,数据) 四次挥手:客户端与服务端断开连接 第一次:客户端调用close方法,向服务端发送长度为0的消息,协议为FIN 第二次:服务端向客户端发送确认消息(关闭连接消息) 第三次:服务端调用close方法,通知客户端 第四次:客户端向服务端发送确认消息,此时客户端与服务端断开连接 三次握手 四次挥手 tcp比udp稳定的原因 tcp在建立连接时,需要客户端与服务端确认是否连接成功,如果没有连接成功,客户端还会想服务端发送确认消息,在建立连接后,每次客户端向服务端发送消息后,服务端都会向客户端发送确认收到的消息 而upd,每次只会发送数据,而不管数据是否发送成功 tcp的长连接与短连接 长连接:在http1.0中,默认使用的是短连接,client请求server,会创建一次连接,访问结束就断开连接 短连接:在http1.1中,默认使用的是长连接,client请求server