TCP和HTTP协议的连接过程,三次握手和四次挥手

1、TCP连接

      手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。

 

      建立起一个TCP连接需要经过“三次握手”:

 

      第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

 

      第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

 

      第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

 

      握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(见下)

 

2、HTTP连接

      HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。

  

    HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

 

       1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。

 

       2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

 

      第一:从传输层,先说下TCP连接,我们要和服务端连接TCP连接,需要通过三次连接,包括:请求,确认,建立连接。即传说中的“三次握手协议”。

 

        第二:从实际上的数据应用来说http。

      在前面客户端和应用服务器建立TCP连接之后,就需要用http协议来传送数据了,HTTP协议简单来说,还是请求,确认,连接。

 

      总体就是C发送一个HTTP请求给S,S收到了这个http请求,然后返回给C http响应,然后C的中间件或者说浏览器把这些数据渲染成为了网页,展示在用户面前。

 

      第一步:发送一个http请求给S,这个请求包括请求头和请求内容:

request header:

      包括了:1.请求的方法是POST/GET,请求的URL,http协议版本

                     2.请求的数据,和编码方式

                     3.是否有cookie和cooies,是否缓存等。

request body:

即请求的内容:

      第二步:S收到了http请求,然后根据请求头,返回http响应。

response header:

应答头 包括 了: 1.cookies或者sessions
                           2.状态码
                           3.内容大小等

response body:

即响应的内容,包括,JS什么的。

      第三步:C收到了以后,就由浏览器完成一系列的渲染,包括执行JS脚本等。

 

HTTP、TCP联系与区别:

 

       TCP是传输层, http是要基于TCP连接基础上的。简单的说,TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输;http是用来收发数据,即实际应用上来的。

 

      TCP是底层通讯协议,定义的是数据传输和连接方式的规范;
 

      HTTP是应用层协议,定义的是传输数据的内容的规范;
 

      HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP ; 

      HTTP支持的是www服务, 而TCP/IP是协议,它是Internet国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。 

      TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。

 

由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的 做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客 户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

 

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

下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:

 

7应用层例如HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP
6表示层例如XDRASN.1SMBAFPNCP
5会话层例如ASAPTLSSSH、ISO 8327 / CCITT X.225、RPCNetBIOSASPWinsockBSD sockets
4传输层例如TCPUDPRTPSCTPSPXATPIL
3网络层例如IPICMPIGMPIPXBGPOSPFRIPIGRPEIGRPARPRARP、 X.25
2数据链路层例如以太网令牌环HDLC帧中继ISDNATMIEEE 802.11FDDIPPP
1物理层例如线路无线电光纤信鸽
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值