java socket编程(理论)

java socket编程(理论)

 

网络编成的两个主要问题

 

  • 如何准确的定位网络上一台或多台主机
  • 找到主机后如何可靠高效的进行数据传输

      在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。

 

 

实现方式

  • 通过HTTP协议传输数据,因为HTTP属于应用层,所以我们可以通过该协议,进行一次短连接,然后传输数据。
  • 通过Socket进行数据传输,Socket是一个连接TCP协议的接口,通过Socket建立的连接是长连接,同样可以传输数据。

 

 

 

五层模型

 

应用层:HTTP、FTP、SMTP、Telnet等

传输层:TCP/IP

网络层:

数据链路层:

物理层:网线、双绞线、网卡等



 

其中还有七层模型和五层模型,其中的区别参考:

http://blog.chinaunix.net/uid-22166872-id-3716751.html

 

 

 

 

TCP和UDP都属于传输层协议,两种传输协议的比较

 

       TCPTranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。

 

        UDPUser Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

 

比较:

 

UDP:

 

  1. 每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
  2. UDP传输数据时是大小限制的,每个被传输的数据报必须限定在64KB之内
  3. UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方

TCP:

 

  1. 面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。
  2. TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。
  3. TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。

 

应用

 

       1、TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP

 

       2、UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。

 

 

 

Socket工作原理

 

Socket套接字:

 

        网络上具有唯一标识的IP地址和端口组合在一起才能构成唯一能识别的标识符套接字。

 

Socket原理机制:

 

  • 通信的两端都有Socket
  • 网络通信其实就是Socket间的通信
  • 数据在两个Socket间通过IO传输

 

Socket通信

 

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

 



 

 

 

 

Socket通信模型



 



 

 

 

 

三次握手

 

无论是HTTP还是Socket,连接都会有一个三次握手,断开连接时都会有一个四次握手,详细参考:

http://www.2cto.com/net/201310/251896.html

 

 

 

基本概念

 

短连接

 

连接->传输数据->关闭连接 

 

短连接是指建立连接,发送数据,接收数据后,马上断开连接。 

 

比如:

 

HTTP1.0默认是短连接,无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

 

Http1.1默认是长连接

无状态:协议对于事务处理没有记忆能力;

 

 

长连接

 

连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 

 

建立SOCKET连接后,不管是否使用,一直保持连接。

 

 

 

http://www.cnblogs.com/itfly8/p/5844803.html

http://blog.csdn.net/zzp_403184692/article/details/8065016

猜你喜欢

转载自youyu4.iteye.com/blog/2356909