为知笔记http://a36bf370.wiz03.com/share/s/2zq_dM1mlQS52P2klg35rzwa2_RkEz3Awkm02IK0Af1KKmOW
TCP/IP协议基础概念
IP协议又称互联网协议,支持网间互联的数据报协议。TCP协议又称传输控制协议,它规定一种可靠的数据信息传递服务。实际中常把这两个协议统称为TCP/IP协议。
OSI参考模型的推荐分层。其中上三层有被称为应用层,下两层称为物理链路层。
TCP和UDP属于传输层,IP协议属于网络层。
IP地址和端口号
IP地址用于表示网络中的一个通信实体,一般指pc主机,而一个端口则对应通信实体中一个程序。要完成端对端的网络通信,就需要携带这两个信息以便能找到通信实体中的处理单元。
IP地址是一个32位的整数,为了便于记忆4个9位的二进制,如255.255.255.255.
端口是一个16位的整型,值为0-65535,用于表示数据由哪个程序处理。
- 公认端口 0-1023 : 他们紧密绑定一些特定的服务。
- 注册端口 1024-49151 :他们松散的绑定一些服务,我们自己写的或者下载的应用程序通常使用这个范围内的端口。
- 动态私有端口 49152-65535,为应用程序使用的动态端口,一般应用程序不会使用这些端口。
基于TCP协议的网络编程
TCP/IP通信协议是一种可靠的网络协议,在通信两端各建立一个Socket,形成网络虚拟链路进行同信。java使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。
通过使用IP协议,保证了计算机能发送和接收分组数据,通过TCP协议提供可靠并且无差错的通信服务。TCP为此进行了三次握手和使用重发机制。
- 三次握手
- 重发机制 当一个通信实体发出一个消息给另一个通信实体后,需要收到另一个通信实体的确认信息,如果没有收到另一个通信实体的确认信息,则会再次重发刚才发送的信息。
基于UDP协议的网络编程
UDP协议是以一种不可靠协议,在通信的两端各建立要给Socket,但没有虚拟链路。由于不需要确认是否发送成功,所以速度比较快,但会丢包。
UDP协议的主要作用是完成网络数据流和数据报之间的转换。在发送端,UDP协议将网络数据流封装成数据包,然后发送。在接受端,UDP协议将数据包转换成数据流。
UDP协议和TCP协议的对比
- TCP协议 :可靠,传输大小无限制,但是需要建立连接,差错控制开销大。
- UDP协议 :不可以靠,传输大小限制在64kB以下,不需要建立连接,差错控制开销小。