协议栈: 各层的所有协议 TCP/IP五层模型: 应用层:网络应用程序以及及它们的应用层协议存留的地方,HTTP/SMTP/FTP 运输层:在应用程序端点之间传送应用层报文,TCP/UDP 网络层:将数据报从一台主机传送到另一台主机,IP 链路层:网络层将数据报下传到链路层,链路层沿着路径将数据报传递给下一个结点,在下一个结点,链路层将数据报上传给网络层 物理层:将帧中一个一个比特从一个结点传递到下一个结点 OSI(开放系统互联)模型: 应用层 表示层:使通信的应用程序能够解释交换数据的含义,服务包括数据压缩、数据解密、数据描述 会话层:数据交换定界和同步问题,包括建立检查点和恢复方案的方法 运输层 网络层 数据链路层 物理层 应用层协议: 定义了运行在不同端系统上的应用程序进程如何相互传递报文 常见应用层协议: 1、http协议(超文本传输协议) 定义了Web客户向Web服务器请求Web页面的方式以及Web服务器向Web客户发送Web页面的方式。HTTP协议不保存客户的任何信息,所以为无状态协议。默认使用带流水线的持续连接 http基于请求-响应模型
http请求报文格式 方法字段:GET、POST、PUT、DELET等; URL:统一资源定位符,用来标识某一处资源的地址; 版本:例如HTTP/1.1 <首部字段名:值>,例如:Host: www.someschool.edu 每一行结尾都要有回车换行 请求行和数据间也要有个空行 http回应报文格式 状态行、消息报头、空行、数据
常见状态码: 200 OK(请求成功) 403 Forbidden(拒绝连接) 404 Not Found(找不到页面) 500 Internal Server Error(服务器发生并不可预期的错误)
Web缓存器:减少用户感受到的响应时间
2、FTP协议(文件传输协议) 用于在网络应用间传输文件,目标是提高文件的共享性和可靠高效地传送数据。 它使用了两个并行的TCP连接:一个控制连接(传输控制信息,如用户标识、口令、改变远程目录的命令、存放获取文件的命令等,持续连接,端口号一般为21)。一个是数据连接(发送实际文件,非持续连接,端口号一般为20) 常见FTP命令: USER:用于向服务器传送标识 PASS:用于向服务器传送口令 LIST:请求服务器回送当前远程目录中的所有文件列表 RETR:从远程主机当前目录检索文件 STOR:在远程主机当前目录存放文件 常见状态码: 331:用户口令ok,需要口令 125:数据连接已经打开,开始传送2 425:无法打开数据连接 452:写文件差错
3、SMTP协议(因特网电子邮件应用层协议) 用于发送方的邮件服务器向接收方的邮件服务器发送报文(持续连接)
一般流程:
HTTP和SMTP对比: 同:当进行文件传输时,均采用持续连接 异:1、HTTP为拉协议,即客户从Web服务器上拉取信息;SMTP为推协议,发送服务器把文件推向接收服务器 2、SMTP要求每个报文使用7比特ASII码格式 3、处理一个既包含文本有包含图片的文档时,HTTP将每个对象封装到自己的响应报文中,而SMTP将所有报文对象放在一个报文之中
4、邮件访问协议: SMTP为推协议,用户代理不能利用SMTP从邮件服务器取回报文(拉操作),故引入邮件访问协议,该协议将邮件服务器上的报文传送至本地PC。包括第三版的邮局协议(POP3)、因特网邮件访问协议(IMPA),相比于POP3,IMPA可以为用户创建远程文件夹以及将邮件从一个文件夹移动到另一个文件夹,在远程文件夹查询邮件等功能
5、DNS协议: DNS域名系统(因特网目录服务):实现主机名到IP地址的转换,DNS是一个由分层的DNS实现的分布式数据库,一个使得主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP之上,使用53端口 一般处理过程: 为了改善时延性能并减少因特网中到处传输DNS报文的数量,DNS广泛使用了缓存技术 DNS 资源记录:提供主机到IP地址的映射,包括4个字段—Name,Value,Type,TTL TTL:生存时间,记录资源记录应该从缓存中删除的时间 若Type=A,则Name为主机名,Value为IP地址 若Type=NS,则Name为域,Value为知道主机IP地址的权威DNS服务器主机名 若Type=CNAME,则Value为别名为Name的规范主机名 若Type=MX,则Value为个别名为Name的规范主机名 DNS报文格式: 传输层协议 1、UDP(用户数据报)协议:无连接的、不可靠数据传输、无拥塞控制(可能导致高的丢包率),基于数据报 2、TCP(传输控制协议):面向连接的,基于字节流的可靠数据连接 TCP可靠性在于 1、三次握手、四次挥手保证连接可靠 2、序号,保证数据有序、完整 3、检验和,保证数据的正确性 4、确认应答和超时重传机制 5、流量控制(滑动窗口),防止缓冲区溢出 6、拥塞控制,减少丢包率
TCP三次握手 TCP四次挥手 TCP状态转换图: TCP拥塞控制(加性增,乘性减): 运行在发送端的TCP拥塞机制跟踪一个额外的变量—拥塞窗口cwnd,他对一个TCP能向网络中发送流量的速率进行了限制,通过调节cwnd值可以调整发送速率 控制算法: (1)慢启动:cwnd初始值设为一个MSS的较小值,则初始发送速率为MSS/RTT,此后每一个确认报文段到达时则增加一个MSS(发送两个报文段,得到ACK后增加两个MSS,此后在发出4个报文段,以此类推)发送速率其实很慢,但随指数增长 (2)拥塞避免:进入此状态,cnmd的值是上次拥塞时的一半,每个RTT将cwnd增加一个MSS (3)快速重传和快速恢复
为什么有些应用选择UDP而不是TCP? 1、关于何时、发送什么数据的应用层控制更为精细 2、无需建立连接,不会引入建立连接的时延 3、无连接状态 4、分组首部开销小 因特网电话、实时会议能容忍少量的分组丢失,因此可靠的数据传输不是必要的,另外,TCP提供的拥塞控制机制会使因特网电话、视频电话的实时应用性能变得很差
