tcp/ip协议栈及相关使用场景

tcp/ip协议栈: 是互联网的主流协议

1) 四层模型

a) 网络接口层->网络层->传输层->应用层
b) 网络接口层: 与物理介质交互
c) 网络层: ip协议,arp协议
d) 传输层: tcp协议,udp协议
e) 应用层: http协议,ftp协议,smtp协议

2) http协议

a) 建立在请求/响应模型上的, 超文本传输协议,无状态协议
b) 首先由客户端建立与服务器的TCP连接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息
c) 服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息
d) HTTP1.0为每次HTTP请求/响应建立新的TCP连接,因此一个HTML页面需要建立多次短期的TCP连接
e) HTTP1.1只建立一次TCP连接,并重复地使用它传输一系列的请求/响应消息,减少了连接建立的次数和连接开销
f) HTTP是基于TCP的协议,很多协议都是基于tcp,udp这两个基本协议的,http协议只是其中之一
g) 在Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息
h) http请求主要有请求头(header: accept/referer/content-type/host/cookie)和请求体(body)组成

3) tcp协议

a) 传输层控制协议,面向字节流传输
b) 面向连接的协议,在收发数据前,必须和对方建立可靠的连接
c) 通过三次握手建立起连接
d) 为应用程序提供可靠的通信连接, 对可靠性要求高的数据通信系统往往使用TCP协议传输数据
e) TCP 是通过重新传输、确认和校验和的方式来确保可靠
f) 慢,效率低,占用系统资源高,易被攻击
g) 因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击
h) 应用场景: 文件传输,发邮件等

4) udp协议

a) 用户数据报协议
b) 是一个非连接的协议,传输数据之前源端和终端不建立连接,不管对方状态就直接发送,像发短信一样,直接发
c) 由于不建立连接,也就不需要维护连接状态,因此一台服务机可同时向多个客户机传输相同的消息
d) 适用于一次只传送少量数据、对可靠性要求不高的应用环境
e) ping命令来测试两台主机之间TCP/IP通信是否正常,原理就是向对方主机发送UDP数据包,对方主机确认收到数据包
f) QQ就使用UDP发消息,因此有时会出现收不到消息的情况
g) UDP Flood攻击
h) 应用场景: 视频传输,实时通信

5) socket

a) 为了实现tcp/udp通信而建立起来的通信管道
b) 客户端和服务器端双方进程通过socket进行通信,而通信的规则采用指定的协议
c) socket只是一种连接模式,不是协议
d) 用socket可以创建tcp连接,也可以创建udp连接
e) 网络进程间通信的原理
ip地址可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。ip地址,协议,端口三者就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互
f) Socket通信的步骤
创建ServerSocket和Socket
打开连接到Socket的输入/输出流
按照协议对Socket进行读/写操作
关闭输入输出流、关闭Socket

6) 总结

tcp/udp是传输层协议,主要解决数据在网络中传输;http是应用层协议,解决如何包装数据

猜你喜欢

转载自blog.csdn.net/zyf_balance/article/details/78729409
今日推荐