java网络编程:网络基本概念
来源:互联网 发布:淘宝平均退货率 编辑:程序博客网 时间:2024/04/27 15:14
OSI与TCP/IP体系模型
2.IP和端口
解决了文章最开始提到的定位的问题。
IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证);网络编程是和远程计算机的通信,所以必须先能定位到远程计算机;IP帮助解决此问题;一台计算机中可能有很多进程,具体和哪一个进程进行通信,这就得靠端口来识别;
IP和端口能唯一定位到需要通信的进程。这里的IP表示地址,区别于IP协议。在OSI体系还是TCP/IP体系中,IP协议位于网际层,来封装IP地址到报文中。
3.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是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。
数据桢:
应用:
- TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。
- UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。
4.Socket
Socket是网络驱动层提供给应用程序编程接口和一种机制。我们可以把 Socket 比喻成是一个港口码头。应用程序只要把货物放到港口码头上,就算完成了货物的运送。对于接收方应用程序也要创建一个港口码头,只需要等待货物到达码头后将货物取走。
Socket 是在应用程序中创建的,它是通过一种绑定机制与驱动程序建立关系,告诉自己所对应的 IP 和 Port。在网络上传输的每一个数据帧,必须包含发送者的 IP 地址和端口号。创建完 Socket 以后,应用程序写入到 Socket 的数据,由 Socket 交给驱动程序向网络上发送数据,计算机从网络上收到与某个 Socket 绑定的 IP 和 Port 相关的数据后,由驱动程序再交给 Socket ,应用程序就可以从这个 Socket 中读取接收到的数据。网络应用程序就是这样通过 Socket 发送和接收的。
Socket数据发送过程:
Socket数据接收过程:
5.常用应用层协议
- java网络编程:网络基本概念
- 一、Java网络编程基本概念
- Java基本概念-网络编程和反射技术
- Windows网络编程基本概念
- 网络编程基础-基本概念
- Linux - 网络编程基本概念
- 网络编程①---基本概念
- 网络编程基本概念
- 网络编程的基本概念
- 网络编程的基本概念
- 网络编程基本概念
- 网络编程中的基本概念
- 网络编程(一)--基本概念
- 【Linux网络编程】基本概念
- 网络编程(1)-基本概念
- 网络编程之网络基本概念复习思路
- 黑马程序员---网络编程基本概念
- 网络编程的一些基本概念
- Windbg 教程-调试非托管程序的基本命令下
- Javascript写入txt和读取txt文件示例
- Android Otto框架浅析
- Hibernate xml配置文件详解
- Qt学习(四)---实例涂鸦画板mspaint
- java网络编程:网络基本概念
- Coreimage.framework
- Innodb中的事务隔离级别和锁的关系
- Yii2.0 时间日期插件之yii-jui-datepicker
- java.net.UnknownHostException: XXXX Name or service not known
- jquery datatable 水平滚动条
- Activity之间传递参数
- 使用PowerDbg自动化Windbg调试过程
- Unity 加载UTF-8 *.Json文件,调用JsonMapper.ToObject异常