您的位置:首页 > 理论基础 > 计算机网络

Socket、TCP/IP、HTTP、FTP及网络编程

2016-04-29 16:40 429 查看
1 TCP/IP协议族

1.1 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成;

IP层负责网络主机的定位,数据传输的路由,由IP地址可唯一确定Internet上的一台主机;

TCP层负责面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象。

1.2 TCP/IP是个协议族,分为三个层次:

网络层:IP协议、ICMP协议、ARP协议、RARP协议、BOOTP协议

传输层:TCP协议、UDP协议

应用层:FTP、HTTP、TELNET、SMTP、DNS等协议



HTTP是应用层协议,其传输都是被包装成TCP协议传输。可以用SOCKET实现HTTP。SOCKET是实现传输层协议的一种编程API,可以是TCP,也可以使UDP。

2 TCP

TCP(传输控制协议),提供面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立以TCP连接才可传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接前,TCP连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求。

TCP市一中面积相连接的保证可靠传输的协议。通过TCP协议传输,得到一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可进行发送或接收操作。

TCP特点:

TCP是面向连接的协议,通过三次握手建立连接,通信完成时要拆除连接,由于TCP是面向连接协议,所以只能用于点对点的通信,并建立连接也消耗时间和开销;

TCP传输数据无大小限制,进行大数据传输;

TCP是一个可靠的协议,它能保证接收方能完整正确地接收到发送方发送的全部数据;

要了解TCP,一定要知道“三次握手、四次拜拜”。”三次握手“是发送数据前必须建立的连接,握完手才开始发送。

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手;

适用情况:

TCP发送的包有序号,对方收到包后要给一个反馈,若超过一定时间还没收到反馈就自动执行超时重发,因此TCP最大优点是可靠。一般网页HTTP、邮件SMTP、远程连接TELNET、文件FTP传送就用TCP。

TCP在网络通信商有极强的生命力,如远程连接TELNET和文件传输FTP都需要不定长度的数据被可靠传输。但可靠传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。

3 UDP

UDP(用户数据报协议),是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,因此传输速度很快。

UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能保证的。

UDP特点:

UDP是面向无连接的通信协议,UDP数据包括目的端口号、源端口号信息,由于通信不需要连接,所以可实现广播发送;

UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB内;

UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同次序到达接收方;

适用情况:

UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,如语音广播、视频、QQ、TFTP(简单文件传送)、SNMP(简单网络管理协议)、RTP(实时传送协议)、RIP(路由信息协议,如报告股票市场、航空信息)、DNS(域名解释)。注重速度流畅。

UDP操作简单,且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中客户端/服务器应用程序。如视频会议系统,并不需要音频视频数据绝对的正确,只要保证连贯性。

4 Socket

Socket也称套接字,用于描述IP地址和端口,是一个通信链的句柄。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一段是一个socket,一个socket由一个IP地址和一个端口号唯一确定。应用程序通常通过套接字向网络发出请求或者应答网络请求。socket是TCP/IP协议的一个编程界面,但socket所支持的协议种类也不光TCP/IP一种,因此两者之间没有必然联系。在Java环境下,socket编程主要是基于TCP/IP协议的网络编程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: