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都属于传输层协议,两种传输协议的比较
TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。
UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
比较:
UDP:
- 每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
- UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
- UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方
TCP:
- 面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。
- TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。
- 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.youkuaiyun.com/zzp_403184692/article/details/8065016