[网络编程] Socket programing - Gukie/spring-learning GitHub Wiki
refer
HTTP,Socket与TCP的区别
HTTP,Telnet,DNS... 这一层,属于应用层
|
Socket 这一层,是传输层抽象出来的一层,本质是接口,即:传输层的接口
|
TCP, UDP 这一层,是真正的数据传输层
|
IP 这一层,是网络层
HTTP跟Socket的区别
- HTTP,是基于TCP的一个应用层,它建立的链接,大部分都是短链接; 也可以通过配置,建立长链接;建立的链接都是 可靠的,有序的
- Socket,可基于TCP,也可以基于UDP建立链接;建立的链接都是长链接; 基于TCP的socket链接,是可靠有序的,基于UDP的则不可靠
- 通信方式:
- HTTP是基于响应式,即“请求-响应”机制; 客户端如果没有发起请求,服务器无法自动发送响应过去
- Socket的通信,是双工的,即 client跟server,谁先发送消息都可以
- 适用场景:
- HTTP适合于: 不需要长时间在线,比如资源获取,大部分的网站
- Socket适用于: 同时在线,进行聊天,视频
TCP跟UDP的区别
- 是否基于链接
- TCP是基于连接的,即通信之前会通过 三次握手,建立链接,这样发送消息之前,知道对方是否在线
- UPD不是基于链接的,即使对方不在线,也可以发送消息
- 是否可靠
- TCP是可靠的,即数据如果发送失败,有重发机制
- UPD是不可靠的,数据发出去了,就不管了;是否发送成功,需要应用程序里做工作
- 数据是否有序
- TCP发送的数据是有序的;
- UDP发送的数据,是无序的