文章目录
1. 模型及TCP/IP模型
2. IP协议
网络层协议
将消息从一个主机发送到另一个主机,消息在传送的过程中被分割成一个个的小包。不能解决数据分组在传输过程中出现的问题,由此出现了TCP
3. TCP协议
传输层协议
TCP协议是一种可靠的网络协议,它在通信实例的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
总结一句话:是一种面向连接的,可靠的,基于字节流的传输层通信协议
3.1 作用
让通信的连个主机之间建立一个连接:用于发送额接收数据的虚拟链路
3.2 适用情况
3.2 为什么说TCP可靠
采用了重发机制,当一个通信实体发送一个消息给另一个通信实体后,需要接收到另一个通信实体的确认消息,如果没有收到另一个通信实体的确认消息,则会再次重发刚才发送的消息
3.3 优点
- 可靠
3.4 缺点
- 相比UDP,效率低,对系统资源要求较多
4. UDP
UDP是传输层协议
UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个socket只是发送,接收数据报的对象。
总结一句话:是一种面向无连接的,不可靠的信息传送服务
5. 作用
完成网络数据流和数据报之间的转换——在信息的发送端,UDP协议将网络数据封装成数据报,然后将数据报发送出去;在信息的接收端,UDP协议将数据报转换成实际数据内容
5.1 适用情况
一次只传送少量数据、对可靠性要求不高
5.2 为什么说UDP协议不可靠
UDP是一种面向非连接的协议,即在正式通信前不必与对方建立连接,不管对方状态就直接发送。至于对象是否可以接收到这些数据内容,UDP协议是无法控制的,所以不可靠
5.3 优点
- 通信是无需建立连接,所以通信效率比较高
- 具有较好的实时性
5.4 缺点
- 不可靠,不能保证数据一定到达接收方
6. HTTP协议
应用层协议
HTTP是超文本传输协议,是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息, 客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成
HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URL、协议版本以及
相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
虽然HTTP本身是一个协议,但其最终还是基于TCP的
8种请求:https://blog.youkuaiyun.com/jinianh/article/details/82844310
6.1 http的8种请求方式
- opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)
- Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
- Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
- Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
- Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
- Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)
- Trace 回显服务器收到的请求,用于测试和诊断
- Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器
6.2 常见错误码
常见有5类状态码详细列出:
-
客户方错误
100 继续
101 交换协议 -
成功
200 OK
201 已创建
202 接收
203 非认证信息
204 无内容
205 重置内容
206 部分内容 -
重定向
300 多路选择
301 永久转移
302 暂时转移
303 参见其它
304 未修改(Not Modified)
305 使用代理 -
客户方错误
400 错误请求(Bad Request)
401 未认证
402 需要付费
403 禁止(Forbidden)
404 未找到(Not Found)
405 方法不允许
406 不接受
407 需要代理认证
408 请求超时
409 冲突
410 失败
411 需要长度
412 条件失败
413 请求实体太大
414 请求URI太长
415 不支持媒体类型 -
服务器错误
500 服务器内部错误
501 未实现(Not Implemented)
502 网关失败
504 网关超时
505 HTTP版本不支持
7. IP、TCP/UDP、HTTP关系
TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等
IP协议来连接网络;TCP是一种允许我们安全传输数据的机制,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。HTTP基于TCP协议,但是却可以使用socket去建立一个TCP连接
总之:TCP依赖IP,HTTP又基于TCP
8. 三次握手/四次挥手
博文推荐:https://blog.youkuaiyun.com/ZWE7616175/article/details/80432486
9. 长连接/短连接
长连接是指的TCP连接,而不是HTTP连接
博文推荐:https://www.jianshu.com/p/3fc3646fad80
10.网络编程的通信模式
博文推荐:http://www.tianshouzhi.com/api/tutorials/netty/221,
select,poll,epoll讲解:https://blog.youkuaiyun.com/qq_35976351/article/details/85228002