因为是做APP开发,所以对网络的了解肯定不如做网络开发的童鞋们,下面只是我觉得与APP开发相关的一些点,不足之处见谅...
一、概述
严格上来说,两个主机进行通信就是两个主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付给主机中的应用进程。从运输层的角度看,通信真正的端点不是在主机而是在主机中的进程。而运输层就提供了应用进程间的逻辑通信。所以,网络层和运输层之间的区别是:网络层是为主机之间提供逻辑通信,运输层是为应用进程间提供端到端的逻辑通信。
根据应用程序的不同要求,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP。
端口
因为进程的创建和撤销都是动态的,通信的一方几乎无法识别对方机器上的进程,所以把一个特定机器上运行的特定进程指明为因特网上通信最后的终点是不可行的。解决这个问题的方法就是在运输层使用协议端口号
,简称端口(port)
。
这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
TCP/IP的运输层用一个16位的端口号来标志一个端口。端口号只具有本地意义,只是为了标志本计算机应用层中的各个进程和运输层交互时的层间接口,所以在因特网上不同计算机中,相同的端口号是没有关联的。16位的端口号可允许有65535个不同的端口号。
1.服务器端使用的端口号
有两类,一类叫做熟知端口号(well-known port number)
或系统端口号
,数值为0~1023.可以在IANA中查到。IANA把这些端口号指派给TCP/IP最重要的一些应用程序,让所有用户都知道。当一个新的应用程序出现时,IANA必须为他指派一个熟知端口,否则因特网上的其他应用进程就无法和他进行通信。
另一类叫做
等级端口号
,数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
2.客户端使用的端口号
数值为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫短暂端口号。这类端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道客户端进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的端口号就不复存在,就可以供给其他客户进程使用。
二、用户数据报协议UDP(User Datagram Protocol)
UDP的主要特点:
1.UDP是无连接的;
2.UDP使用尽最大努力交付,即不保证可靠交付;
3.UDP是面向报文的;
4.UDP没有拥塞控制;
5.UDP支持一对一、一对多、多对一、多对多的交互通信;
6.UDP的首部开销小,只有8个字节,TCP最少是20字节。
三、传输控制协议TCP(Transmission Control Protocol)
TCP的主要特点:
1.TCP是面向连接的传输层协议;
2.每一条TCP连接只能有两个端点;
3.TCP提供可靠交付服务;
4.TCP提供全双工通信;
5.面向字节流
TCP连接
TCP连接的端点叫做套接字(socket)
或插口
。根据RFC793的定义:端口号拼接到IP地址即构成了套接字。例如,若IP地址192.11.22.33的端口号是80,那么得到套接字就是(192.11.22.33:80)。
TCP连接的端点是套接字,同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现多个不同的TCP连接中。
TCP的运输连接管理
1.连接建立
2.数据传送
3.连接释放