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连接后,不管是否使用,一直保持连接。
相关推荐
本教程将深入探讨Java Socket编程的核心概念,以及如何利用它进行网络通信。 1. **Java Socket基础** - **Socket的概念**:Socket是网络通信中的一个端点,可以理解为两台机器间通信的桥梁。在Java中,Socket类...
通过动手实践,读者可以将理论知识转化为实际技能,更好地理解和掌握Java中的Socket编程。 综上所述,《Java TCP/IP Socket编程》(原书第2版)是一本全面且深入的指南,无论你是初学者还是有一定经验的开发者,都...
Java TCP/IP Socket编程是Java网络编程中的重要组成部分,它提供了在网络间进行数据传输的基础机制。TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网上最基础的通信协议,而Socket则是TCP/...
Java TCP/IP Socket编程是Java网络通信的核心技术,广泛应用于服务器端和客户端之间的数据传输。这本书的第二版深入探讨了如何使用Java实现TCP/IP协议栈的socket接口,为开发者提供了全面的理论知识和实践指导。 ...
Java TCP/IP Socket编程是网络通信领域中的核心技术,广泛应用于服务器端和客户端之间的数据传输。本资源包含一本关于Java TCP/IP Socket编程的书籍及其配套源代码,对于深入理解Socket编程至关重要。 书籍《Java ...
Java网络编程是构建分布式应用程序的关键技术,而Java Socket编程则是其核心部分,允许两台计算机通过网络进行双向通信。在Java中,Socket是基于TCP/IP协议的,提供了可靠的、面向连接的数据传输服务。 首先,理解...
这五个主题分别是:记事本程序、异常处理、文件复制、Socket编程以及数据库操作。 首先,我们来看"记事本"项目。这是一个基础的文本编辑器实现,通常会涉及到Java Swing或JavaFX图形用户界面(GUI)库的使用。...
Java Socket编程是Java网络编程中的重要组成部分,它允许两台计算机通过网络进行通信。Socket在计算机网络中扮演着客户端和服务器的角色,使得应用程序能够发送和接收数据。本篇内容将深入探讨Java Socket编程的基础...
Java Socket编程是网络编程的基础,它是Java平台中用于实现客户端-服务器通信的核心API。本教程将深入探讨Java Socket编程的概念、用法以及实际应用中的关键点。 Java Socket提供了低级别的网络通信接口,允许应用...
Java Socket编程是Java网络编程的重要组成部分,它提供了在两台机器间进行低级通信的能力,使得应用程序能够实现客户端-服务器架构。...记住,实践是最好的老师,理论结合实际案例,你的Socket编程技能将不断提升。
Java Socket编程是Java网络编程的基础,它提供了网络通信的能力,使得程序可以与其他计算机上的服务进行交互。在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并...
Java Socket编程是Java网络编程的重要组成部分,它提供了进程间通信的能力,使得运行在不同设备上的应用程序可以通过网络进行数据交换。本教程将深入讲解Java Socket编程的基础概念、原理以及实际应用。 1. **...
Java Socket编程是Java中用于实现网络通信的一种机制,它基于TCP/IP协议族,允许应用程序通过Socket接口进行数据传输。在Java中,Socket编程涉及到多个重要概念和技术,包括网络模型、URL通信、TCP和UDP的Socket编程...
8. 实战案例:提供实际的NIO和Socket编程示例,帮助读者将理论知识应用于实践。 通过阅读《NIO与Socket编程技术指南》,读者不仅可以理解NIO和Socket的基本原理,还能学习到如何在实际项目中有效地利用这些技术,...
在Java编程领域,Socket通信是实现网络间应用进程间通信的一种技术。...通过这样的实践,你将对Java Socket编程有更深入的理解,也能熟练运用CINDY包进行开发。记住,理论与实践相结合是掌握技术的最好方式。
《Java+TCP/IP+Socket编程++原书第2版》是一部深入探讨Java网络编程的权威著作,主要聚焦于TCP/IP协议栈与Socket编程技术。在Java编程领域,掌握网络通信能力是开发分布式系统、服务器端应用以及实时数据传输等项目...
本文将深入探讨Java中的Socket编程,包括基本概念、工作原理以及实际应用。 一、Socket基础 Socket,中文常称为“套接字”,是网络通信中的接口,它允许两个程序通过网络交换数据。在Java中,Socket类和...
在Java中,网络编程主要依赖于Java的Socket编程、ServerSocket、URL类以及NIO(非阻塞I/O)等核心API。这份"Java网络编程期末考试复习题库+答案"为学生提供了全面的复习资源,涵盖了Java网络编程的主要知识点。 1. ...
Java Socket通信程序源码是Java网络编程中一个重要的学习领域,它主要用于实现两台计算机之间的数据传输。在Java中,Socket是基于TCP/IP协议的一种低级通信机制,它提供了进程间网络通信的能力。本篇文章将深入探讨...
《Java网络编程(第四版)》是一本深入探讨Java在互联网环境下的编程技术的经典书籍。...通过阅读和实践书中的例子,读者不仅可以掌握理论知识,还能积累实际开发经验,从而在实际项目中更好地应用Java进行网络编程。