http协议与tcp协议的理解

1.区别

tcp协议是对应于传输层,http协议是对应于应用层,从本质上来说,二者是没有可比性的。http协议是建立在tcp协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发送一次http请求。http会通过tcp建立起一个到服务器的连接通道,当本次请求需要的数据完毕之后,http会立即将tcp连接断开,这个过程是很短的。所以http是一种无状态的短链接。所谓的无状态是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束之后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

http就是在每次请求完成之后就把tcp连接关闭了,所以是短链接,而我们直接通过socket[套接字]编程使用tcp协议的时候,我们可以自己通过代码区控制什么时候打开连接什么时候关闭连接,只要我们不通过代码把连接关闭,这个连接就会在客户端和服务端的进程中一直存在,相关状态数据就会一直存着。

2.http之状态码

状态码有三位数字组成,第一个数字定义了响应的类别,且有5种可能:

1xx:指示信息----表示请求已接收,继续处理

2xx:成功----表示请求已被接收,理解,接受

3xx:重定向----要完成请求必须进行更进一步的操作

4xx:客户端错误----请求有语法错误或请求无法实现

5xx:服务端错误----服务器未能是实现合法的请求

常见状态码,状态描述,说明:

200:ok      //客户端请求成功

400:bad request     //客户端请求有语法错误,不被服务器所理解

401:Unauthorized      //请求未经授权

403:forbidden    //服务器收到请求,但是拒绝提供服务

404:not found    //请求资源不存在 eg:输入了错误的url

500:internal server error    //服务器发生不可预期的错误

503:server unavailable     //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

3.tcp三次握手和四次分手

传递过程中出现的字符的含义:

SYN,ACK,FIN存放在tcp的标志位,一共有6个字符,这里就介绍这三个:

SYN:代表请求创建连接,所以在三次握手中前两次要SYN=1,表示这两次用于建立连接

FIN:表示请求关闭连接,在四次分手时,我们发现FIN发了两遍。这是因为tcp的连接是双向的,所以一次FIN只能关闭一个方向

ACK:代表确认接受,不管是三次握手还是四次挥手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接之后的发送数据的时候,都需加上ACK=1,来表示数据接收成功

seq:序列号,当发送一个数据时,数据是被拆成多个数据包来发送,序列号就是对每个数据包进行编号,这样接收方才能对数据包进行再次拼接

ack:这个代表下一个数据包的编号,这也就是为什么第二次请求时,ack时seq+1

三次连接:

1.客户端首先要发送SYN=1,表示要创建连接

2.服务端接收到后,要告诉客户端:我接受到了,所以加个ACK=1,就变成了ACK=1,SYN=1

3.理论上这时候就创建连接成功了,但是要防止一个意外,所以客户端要在发送一个消息给服务端确认一下,这时候只需要ACK=1就行了【如果一个连接请求在网络中跑的慢,超时了,这时客户端会从发请求,但是这个跑的慢的请求最后还是跑到了,然后服务端就接收了两个连接请求,然后全部回应就会创建两个连接,浪费资源!如果加了第三次客户端确认,客户端在接受到一个服务端连接确认请求后,后面再接收到的连接确认请求就可以抛弃不管了】

四次挥手:【tcp是双向连接的】

1.首先客户端请求关闭客户端到服务端方向的连接,这时候客户端就需要发送一个FIN=1,表示要关闭一个方向的连接

2.服务端接收到后是需要确认一下的,所以返回一个ACK=1

3.这时之关闭了一个方向,另一个方向也需要关闭,所以服务端也向客户端发送了一个FIN=1,ACK=1

4.客户端接收到后发送ACK=1,表示接受成功

4.osi的七层模型:

物理层--------数据链路层--------网络层--------传输层--------会话层--------表示层--------应用层

原文地址:https://www.cnblogs.com/yr-number1/p/11037313.html

时间: 2024-10-08 20:06:49

http协议与tcp协议的理解的相关文章

Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

iOS Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

Http协议与TCP协议简单理解(转)

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

【转载】Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,不

Http协议与TCP协议

阅读文章: Http协议与TCP协议简单理解 Http协议与TCP协议简单理解后续 这两篇文章有点关系,可以先读第一篇,在读第二篇. 作者根据自己的一问去读书,然后慢慢尝试解释疑问.

【网络协议】TCP协议简介

本文只是对TCP协议做个简要的介绍. TCP协议,即传输控制协议,与UDP协议同处于传输层,同样使用相同的网络层,但TCP提供了一种可靠的.面向连接的数据传输服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输. TCP通过以下方式提供可靠性: 1.应用程序被分割成TCP认为最合适发送的数据块.这点与UDP完全不同,应用程序产生的UDP数据报长度将保持不变,加上IP首部后,才会进行IP分片. 2.当TCP发出一个报文段后,它会启动一个定时器,等待目的端发确认收到这个报

Java通信编程中调用UDP协议与TCP协议之间的不同

UDP协议与TCP协议之间的区别不再分析,主要是分析一下这两个协议在Java通信编程中是如何被使用的. 首先介绍TCP,对于TCP,Java语言为它提供了良好的支持.建立TCP通信,首先需要构建服务器,并且得 到服务器的IP和端口号. TCP协议下的Socket类: java.net.Socket类代表客户端连接 java.net.ServerSocket类代表服务器端连接 Server:ServerSocket ss = new ServerSocket(5000); //创建服务器端的soc

Http协议与TCP协议理解

TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接.如果是一个连接的话,服务器进程中就能

IP封包协议头/TCP协议头/TCP3次握手/TCP4次挥手/UDP协议头/ICMP协议头/HTTP协议(请求报文和响应报文)/IP地址/子网掩码(划分子网)/路由概念/MAC封包格式

IP协议头IP包头格式: 1.版本号:4个bit,用来标识IP版本号.这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6.目前使用的IP协议版本号是4. 2.首部长度:4个bit.标识包括选项在内的IP头部字段的长度. 3.服务类型:8个bit.服务类型字段被划分成两个子字段:3bit的优先级字段和4bit TOS字段,最后一位置为0. 4bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小花费.4bit中只能将其中一个bit位置1.如果4个bit均为0,则