Socket 相关概念

一、Socket是什么

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。

套接字用(IP地址:端口号)表示。

它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

二、一些基本概念

  1. TCP/IP
               TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
               在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
               在传输层中有TCP协议与UDP协议。
               在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议
               UDP包括DNS、TFTP等协议

  2. 短连接:
               连接->传输数据->关闭连接
               HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

  3. 长连接:
               连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。
               长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

  4. http的长连接:
               HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。
    什么时候用长连接,短连接?
               长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
    而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
               总之,长连接和短连接的选择要视情况而定

  5. 发送接收方式
    1、异步 

           报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况: 
           (1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收 
           (2)异步单工:接收和发送是用两个不同的程序来完成。 
    2、同步 
           报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。
           在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文。  

猜你喜欢

转载自blog.csdn.net/huachizi/article/details/89237245
今日推荐