TCP、HTTP协议以及SOCKET编程

一、TCP 协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。·


TCP、HTTP协议以及SOCKET编程_第1张图片
图片发自App

最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。但是,以太网协议不能解决多个局域网如何互通,这由 IP 协议解决。IP 协议定义了一套自己的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向另一个局域网的 B 主机发送消息。

简单来说以太网协议使电子信号组成了操作系统可以识别的数据包,而 IP 协议则是为这些需要传输的数据包提供了源地址与目的地址及传输方式,但 IP 协议不保证数据包传输的完整性。TCP 的作用保证了数据传输的完整性防止丢包。

二、http 协议

HTTP 协议是互联网的基础协议,也是网页开发的必备知识。Http 协议是基于 TCP/IP 协议的应用层(application )协议,它不涉及数据包传输,主要规定了服务器与客户端之间的传输协议,默认使用的是80端口。http 可以传输任何格式的文件并且有多种请求方式例如 POST,GET,HEAD等,每次通信时都自带一个请求头 Http Header,用来描述一些请求信息。之前在做SSM与客户端通信时,请求头信息都有callback关键字。还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。

简单理解 http 协议规定了服务器与客户端通信的规则。

三、sockect 编程

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。


TCP、HTTP协议以及SOCKET编程_第2张图片
图片发自App

这样看来或许你会觉得与http协议差不多,都是基于 TCP 基础之上,但 socket 不是一个协议而是一组接口。显然 socket 比 http 更“底层”,socket本质是编程接口(API),对TCP/IP的封装,HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

简单而言,http 是一种单向的链接而 socket 编程是一种双向的链接,这就使socket有了http没有的优势 即时性,当我们需要到即时性如服务器主动推送消息、即时聊天室,即时通信时就要使用socket编程。使用 socket 编程可以大大减少 TCP 链接造成的耗时浪费,并且更稳定。在编程难度上要比http高得多

你可能感兴趣的:(TCP、HTTP协议以及SOCKET编程)