TCP/IP分层(4层)
网络接口层、网络层、运输层、应用层
五层协议(5层)
物理层、数据链路层、网络层、运输层、应用层
数据链路层:
数据:帧
物理层:(电缆,接收器,发送器)
数据:比特
运输层:向两个主机进程之间的通信提供通用的数据传输服务。
数据:TCP:报文段,UDP:用户数据报
协议:TCP, UDP
网络层:为分组交换网上的不同主机提供通信服务
数据:包或IP数据报
协议:IP
应用层:通过应用进程间的交互来完成特定网络应用
数据:报文(请求报文,响应报文)
协议:HTTP, SMTP(邮件), FTP(文件传送),SSH
典型的请求头有:
User-Agent:产生请求的浏览器类型;
Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ”
指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
Accept-Language:客户端可接受的自然语言;
Accept-Encoding:客户端可接受的编码压缩格式;
Accept-Charset:可接受的应答的字符集;
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
connection:连接方式(close 或 keepalive);
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
响应报文:状态行,响应头 ,响应体
状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:
2xx:表示服务器已成功接收到请求并进行处理;
4xx:表示客户端的请求有非法内容;
5xx:表示服务器未能正常处理客户端的请求而出现意外错误;
TCP
面向连接的运输层协议。
点对点(一对一)通信。
可靠交付。
全双工通信(TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据)。
面向字节流。
UDP
无连接的(发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延)
尽最大努力交付(不保证可靠支付,因此主机不需要维持复杂的连接状态表)
面向报文的(UDP对应用层交下来的报文,添加完首部后就直接交付IP层。如果太长就会分片)
UDP没有拥塞控制
UDP支持一对一、一对多、多对一和多对多的交互通信
UDP的首部开销小(只有8个字节,TCP有20个字节)