首先,我们大学的时候读过OSI七层网络,包括物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中各层有各自的角色作用。
盗用一张图片
TCP/IP协议,包含了一组不同的协议,比如TCP、IP、UDP等等。
根据7层协议,Ip是属于网络层,用来告诉一个包该去往哪个节点。TCP协议则处于传输层,目的是确保这个包能一份不拉的到达对方手中。然后我们经常说的HTTP协议、FTP协议等就是应用层的东西,负责告诉用户我这个包是干什么用的。
TCP之所以可以可靠的传输内容,在于他有三次握手,然后才开始传输数据,相反,UDP则因为没有这个过程而无法保证数据不丢失,当然数据传输效率后者高于前者。当然程序员也可以通过自己手工加入校验机制确保udp的传输无误。
OK。搞清楚上面的之后,我们再来看下HTTP协议,这个协议是基于请求->获取信息->释放请求,这样一个步骤的。他是个短时间的东西,事情做完了,自然就释放资源了。所以我们用来请求一个网页信息,请求一个json字串。
Socket、这个是经常用到的东西,一个socket包含服务端和客户端,是个可以长时间存在的连接。本质上是对tcp协议的接口,因为我们不可能直接去调tcp。
一个socket服务端会经过绑定地址、监听、接受请求、建立连接、继续监听这样一个过程。