http与tcp简介、三次握手与四次挥手

OSI七层模型:应用层、表现层、会话层、运输层、网络层、数据链路层、物理层

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

TCP/IP协议族包括IP\TCP、UDP、FTP、HTTP、DNS等

TCP/IP协议族的四层:应用层、传输层、网络层、链路层

层名作用示例
应用层该层面向用户,决定了向用户提供应用服务时的通信活动http(超文本传输协议),ftp(文件传输协议),dns(域名系统)
传输层应用层会将数据交付给传输层进行传输tcp(传输控制协议),udp(用户数据协议)
网络层处理在网络上流动的数据包,负责在众多网络线路中选择一个传输线路,而且这需要ip和mac地址的支持ip(网络协议)
链路层该层主要是处理网络的硬件部分nic(network interface controller)网卡

 

三握手过程:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机)  ACK(acknowledgement 确认)  PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)

示意图如下:

1.第一次握手:发送端发送一个带SYN(Synchronize)标志的数据包给接收 端,用于询问接收端是否可以接收。如果可以,就进行第二次手                                                                                                                   

2. 第二次握手:接收端回传给发送端一SYN/ACK(Acknowledgement)的数据包,给发送端说,我收到你给我发送的SYN标志了,我再给你传一个ACK标志,你能收到吗?如果发送端收到了SYN/ACK这个数据包,就可以确认接收端收到了之前发送的SYN, 然后进行第三次握手。                                                                                                               

3.第三次握手:发送端会给接收端发送一个带有ACK标志的数据包,告诉接收端我可以收到你给我发送的SYN/ACK标志。接收端如果收到了这个来自客户端的ACK标志,就意味着三次握手完成,连接建立,就可以开始传输数据了

四次挥手过程:

1.某进程先调用close()函数,该端TCP发送FIN(fin = i),表示数据发送完毕,需要关闭连接,称为主动关闭
2.接收到FIN的服务器端执行被动关闭。进行确认(ACK , ack = i+1),在该进程接收的其他所有数据之后添加文件结束符(end-of-file)。
3.一段时间之后(虽然服务器接收被动关闭命令,但它不能立即关闭,因为服务器端还有其他数据处理),接收到文件结束符的进程调用close()函数关闭套接字,这导致它的TCP也发送FIN(fin = j)。
4.主动关闭连接的一端确认(ACK , ack = j+1)最后发送的FIN。

重点:为什么建立连接需要三次握手,而断开连接需要四次挥手?

 

建立、断开连接都需要两次请求与确认,只是建立连接时SYN、ACK可以同时发回;而在断开连接时,由于被动关闭的一端可能还会发送数据,只有数据发完后才能发送ACK,所以只能分开发送也就造成了建立连接为三次(建立连接时由于握手期间连接未完全建立,故不能发送其他数据),断开连接反而成了四次。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值