一.TCP/IP代表传输控制协议/网际协议,指的是一系列协组。可分为四个层次:数据链路层、网络层、传输层和应用层。
在网络层:有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层:中有TCP协议与UDP协议。
在应用层:有FTP、HTTP、TELNET、SMTP、DNS等协议。
TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
一、tcp
TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP用于需要可靠传输的情况。由于它是面向有连接,可以为应用提供可靠传输服务。无论哪一方在发送送数据之前,都必须先在双方之间建立一条连接。tcp协议中,连接是通过三次握手进行初始化的。三次握手的目的是双方协商一些参数(如双方序列号和确认号,交换最大窗口值,是否使用窗口扩大选项等)
1、TCP是面向连接的,可靠的数据传输服务。在进行数据传输之前必须先建立连接,如打电话,通话前需要先确认在拨号建立连接,等对方接通了才能进行沟通传达信息,数据传输到后需要清除连接。
2、tcp是数据传输连接可靠,面向字节流,保障数据正确性,不丢失,不出错,顺序一致不重复,每一条TCP连接有两个端点,每一条TCP连接只能是一对一的
3、tcp能提供流量控制,接收端处理数据的速度有限,如果发送太快,容易导致接收端的缓冲区被填满,继续发送就会造成丢包。TCP支持根据接收端的处理能力决定发送端的速度,防止过多数据注入网络中,避免路由器连接负载。
二、udp
UDP是是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。以下几个特点:
1、面向无连接
UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。
具体来说就是:
在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层了。
在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作
2、有单播,多播,广播的功能
UDP没有拥塞控制,传输速度快,支持一对一、一对多、多对一和多对多的交互通信。由于传输数据不建立连接,也就不需要维护连接状态,包括收发状态等,一台服务机可同时向多个客户机传输相同的消息。
TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。虽然UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为。对数据准确性要求高,速度可以相对较慢的,可以选用TCP。
三、HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议
HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URL、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
四、SOCKET:TCP/IP网络的API
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket 接口是 TCP/IP 网络的 API,Socket 接口定义了许多函数或例程,用以开发 TCP/IP 网络上的应用程序。