TCP/IP,HTTP,Socket的区别

来源:互联网 发布:学matlabgui编程的意义 编辑:程序博客网 时间:2024/06/03 16:31

网络由上至下分为:

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


IP协议对应于网络层,TCP协议对应于传输层,HTTP对应于应用层

socket是对TCP/IP协议的封装和应用;TCP/IP协议是传输层协议,主要解决数据如何在网络上传输;HTTP是应用层协议,主要解决如何封装数据。

“我们在传输数据的时候,可以只使用TCP/IP协议,但是无法识别数据内容。想要使传入的数据有意义,必须要使用应用层协议。Web使用HTTP协议做应用层协议,以封装HTTP问题信息,然后使用TCP/IP做传输层协议将它发布到网络上”

What is socket? socket:是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket才能使用TCP/IP。 socket跟TCP/IP协议没有必然的联系,Socket编程接口在设计的时候,希望能适应其他的网络协议,所以Socket只是方便程序员更加方便的使用TCP/IP协议栈,是对TCP/IP的抽象,从而形成了一些基本的函数接口,比如:create,connect,accept,read,write等。

TCP/IP和Socket的理解: “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。TCP/Ip也要提供程序员做网络开发所用的接口,这就是Socket编程接口。”

HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

传输层的TCP是基于网络层的IP协议层,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,它只是提供了一个针对于TCP或者UDP编程的接口。

什么是TCP连接的三次握手

1.第一次握手:客户端发送syn包(syn=j)到服务器,并进入synsend状态,等待服务器确认; 2.第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个syn(syn=k),即syn+ack包,此时服务器进入,此时服务器进入synrecv状态; 3.第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=k+1),此时包发送完毕,客户端和服务器进入estalished状态,完成三次握手。

握手的过程中传送的包里不包含数据,三次握手完毕后,客户端和服务器才正式开始传输数据。

理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都被一直保持下去。

断开连接时,服务器和客户端都可以发起断开TCP连接的请求,断开过程需要经过“四川捂手”

利用Socket建立网络连接的步骤

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket;另一个运行于服务端,称为ServerSocket 套接字之间的连接过程分为三步:服务器监听,客户端请求,连接确认 1·服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接状态,实时监控网络状态,等待客户端的连接请求

2.客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字

为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

3.连接确认:当服务器端套接字监听或者收到客户端套接字的连接请求,就相应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发送给客户端,一旦客户端确认了描述,双方就建立连接。

而服务器端套接字继续处于监听状态,继续接受其他客户端套接字的连接请求。

HTTP链路的特点

HTTP协议即超文本传输协议,是WEB联网的基础,也是手机联网的常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。

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

TCP和UDP的区别

1.TCP是面向连接的,虽然说是网络的不安全不稳定决定了多少次握手都不能保证连接的可靠性,但是TCP的三次握手最大程度上保证了连接的可靠性

UPD不是面向连接的,UDP传输数据并不于对方建立连接,对方收到的数据也不发送确认信息号,发送端不知道数据是否会正式,所以说UDP是无连接不可靠的一种数据传输协议

2.使用UDP的开销更小,不必进行收发数据的确认,UDP的实时性更好,比如:视频


0 0