socket,tcp,http三者之间的区别和原理

1.七层网络模型

        七层网络模型简称OSI模型,供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。

7.应用层:例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6.表示层:例如XDR、ASN.1、SMB、AFP、NCP
5.会话层:例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4.传输层:例如TCPUDP、RTP、SCTP、SPX、ATP、IL
3.网络层:例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2.数据链路层:例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
1.物理层:例如线路、无线电、光纤、信鸽

七层模型是理想模型,很少会完整的用到七层

2.tcp三次握手

 

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

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

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

客户端发送x给服务器,服务器回一个x+1表示收到了这个x,同时会回个y,客户端收到y后会发送y+1表示收到了y。

3.tcp四次挥手

 

  • 为什么连接的时候是三次握手,关闭的时候却是四次握手?

        因为服务器有可能还在跟其他的数据进行通信,来不及回复客户端,但是也不能让客户端久等,所以当第一次收到FIN=1时,会告诉客户端我已经收到了,但是我还有其他数据要处理(也就是第二次握手),其他数据处理完后会跟客户端说:我现在准备正式跟你断开消息了(第三次握手),客户端收到服务器准备断开的消息后,最后进行第四次握手最终断开。

  • 如果已经建立了连接,但是客户端突然出现故障了怎么办?

        客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

4.socket,tcp,http三者之间的区别

  • TCP、UDP是负责数据的传输的,实现数据传输有TCP就够了,他们可以实现数据的收发,但是无法解析数据,就像说不同语言的人进行沟通,能听到但听不懂,这时候就需要http
  • 而HTTP可以理解成一个协议,它负责让双方说的话对方都能听懂,它是建立在TCP/IP之上的一种应用层协议
  • 而socket可以理解为是TCP的一种封装形式,socket本身不是一种协议,而是一个调用接口,为了让我们更方便的使用TCP、IP协议
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值