您的位置:首页 > 编程语言

socket编程浅谈

2016-05-11 10:06 127 查看

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

IP协议对应与网络层,TCP,UDP协议对应于传输层,而HTTP协议对应于应用层. Socket是对TCP和IP协议的封装和应用,是程序员层面上的,也可以说,TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据,实际上socket是对TCP/IP协议的封装,socket本身并不是协议,而是一个调用接口(API). 通过Socket,我们才能使用TCP/IP协议,实际上,Spcket跟TCP/IP没有必然的联系,Socket编程接口在设计的时候,就希望也能使用其他的网络协议,所以说Socket的出现只是使得程序员更方便的使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的接口操作,TCP/IP提供给可供程序员做网络开发所用的接口就是Socket编程接口,Socket提供了网络通信的能力. 实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,它只是提供了一个针对TCP或者UDP编程的接口. TCP的三次握手

  1. 第一次握手:主机A向主机B发送一个包含序列号的标志位的数据段给主机B向主机B请求建立连接,通过这个数据段,主机A告诉主机B两件事:我想要和你通信,你可以用哪个序列号作为起始数据段来回应我.
  2. 主机B收到主机A的请求后,用一个带有确认应答和同步序列号标志位的数据段相应主机A,也可以告诉主机A两件事:我已经收到你的请求了,你可以传输数据了,你要用哪个序列号作为起始数据段来回应
  3. 主机A收到这个数据段后,再发送一个确定应答,确定已收到主机B的数据段:”我已收到回复,我现在要开始传输实际数据了,这样3次握手就完成了,主机A和主机B就可以传输数据了” 3次握手的特点:没有应用层的数据,SYN这个标志位只有在TCP建立连接时才会被置1,握手完毕后SYN被置0 TCP断开连接的4次握手
  4. 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
  5. 主机B收到FIN后会对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
  6. 由B端提出反方向的关闭请求,将FIN置1
  7. 主机A对主机B的请求进行确认,将ACK置1,将双方的关闭结束 TCP的三次握手和四次断开可以看出TCP使用面向连接的通信方式,大大提高了通信的可靠性,使发送数据端和接收数据段在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础 UDP(用户数据报协议): 1.UDP是一个非连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单的去抓取来自应用程序的数据,并尽可能快的扔到网络上,在发送端,UDP传送数据的速度仅仅是受应用程序生成的数据的速度,计算机的能力和传输带的限制,在接收端,UDP把每一个消息端放在队列中应用程序每次从队列中读一个消息端 2.由于传输数据不建立连接,因此也就不需要维护连接状态,因此一台服务器可以向多个客户端传输相同的消息 3.UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小 4.吞吐量不受用具控制算法的调节,只受应用软件生成数据的效率主机性能的限制 5.UDP使用尽最大努力支付,即不保证可高支付,因此主句不需要维持复杂的链接状态表 6.UDP是面向报文的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: