TCP/IP常见问题总结(二)
上一篇的传送门:TCP/IP常见问题总结(一)
6. TCP滑动窗体与回退N帧协议
1.停等协议
2.滑动窗体协议之GoBackN
滑动窗体的意思事实上就是一个缓冲区(发送方为发送窗体,接收方为接收窗体),缓冲区的内容会随着数据的发送而移动,因此称为滑动窗体。
滑动窗体协议同意发送方连发数帧,每发一帧都相应 一个计时器timeout,而GoBackN协议要求发送方把丢失帧及其之后的帧所有重传(由于光凭一个ACK并不能确定哪些帧出现了丢失,ACK的含义是:期待接收序号为N的帧,之前所有的帧都已经成功收到并依此交给了上层)。其示意图例如以下:
3.滑动窗体协议之选择性重发
7. Http的报文结构
请求头
- 请求方法:主要为Get、Post等方法
- URL:即请求的地址
- 协议版本号:主要有Http1.0和Http1.1两种
响应头
- 版本号:使用的Http协议版本号
- 状态码:表示处理结果状态的数值,由三位数字组成,第一位数字表示响应的类型,主要有下面几种:
- 1XX:表示server已接收了client请求,client可继续发送请求
- 2XX:表示server已成功接收到请求并进行处理
- 3XX:表示server要求client重定向
- 4XX:表示client的请求有非法内容
- 5XX:表示server未能正常处理client的请求而出现意外错误
- 原因短语:一串用于解释返回该状态码原因的字符串
8. Http的状态码含义
1XX:表示server已接收了client请求。client可继续发送请求
100 (Continue/继续)
假设server收到头信息中带有100-continue的请求。这是指client询问能否够在兴许的请求中发送附件。在这样的情况下,server用100允许client继续或用417 (Expectation Failed)告诉client不允许接受附件。
这个状态码是 HTTP 1.1中新增加的。
101 (Switching Protocols/转换协议)
101 状态码是指server将依照其上的头信息变为一个不同的协议。这是 HTTP 1.1中新增加的。
2XX:表示server已成功接收到请求并进行处理
200 (OK/正常)
200 的意思是一切正常。一般用于对应GET和POST请求。
201 (Created/已创建)
201表示server在请求的响应中建立了新文档;应在定位头信息中给出它的URL。
202 (Accepted/接受)
202告诉client请求正在被运行,但还没有处理完。
203 (Non-Authoritative Information/非官方信息)
状态码203是表示文档被正常的返回,可是因为正在使用的是文档副本所以某些响应头信息可能不对。这是 HTTP 1.1中新增加的。
204 (No Content/无内容)
在并没有新文档的情况下,204确保浏览器继续显示先前的文档。这各状态码对于用户周期性的重载某一页很实用。而且你可以确定先前的页面是否已经更新。
可是,这样的方法对通过刷新响应头信息或等价的HTML标记自己主动重载的页面起作用,由于它会返回一个204状态码停止以后的重载。但基于JavaScript脚本的自己主动重载在这样的情况下仍然须要可以起作用。
205 (Reset Content/重置内容)
重置内容205的意思是尽管没有新文档但浏览器要重置文档显示。
这个状态码用于强迫浏览器清除表单域。这是 HTTP 1.1中新增加的。
206 (Partial Content/局部内容)
206是在server完毕了一个包括Range头信息的局部请求时被发送的。
这是 HTTP 1.1中新增加的。
3XX:表示server要求client重定向
300 (Multiple Choices/多重选择)
300表示被请求的文档能够在多个地方找到,并将在返回的文档中列出来。
假设server有首选设置,首选项将会被列于定位响应头信息中。
301 (Moved Permanently)
301状态是指所请求的文档在别的地方。文档新的URL会在定位响应头信息中给出。
浏览器会自己主动连接到新的URL。
302 (Found/找到)
与301有些类似,仅仅是定位头信息中所给的URL应被理解为暂时交换地址而不是永久的。
注意:在 HTTP 1.0中。消息是暂时移动(Moved Temporarily)的而不是被找到。
303 (See Other/參见其它信息)
这个状态码和 301、302 相似,仅仅是假设最初的请求是 POST。那么新文档(在定位头信息中给出)药用 GET 找回。这个状态码是新增加 HTTP 1.1中的。
304 (Not Modified/为修正)
当client有一个缓存的文档,通过提供一个 If-Modified-Since 头信息可指出client仅仅希望文档在指定日期之后有所改动时才会重载此文档,用这样的方式能够进行有条件的请求。304是指缓冲的版本号已经被更新而且client应刷新文档。另外。server将返回请求的文档及状态码 200。
305 (Use Proxy/使用代理)
305表示所请求的文档要通过定位头信息中的代理server获得。
这个状态码是新增加 HTTP 1.1中的。
307 (Temporary Redirect/暂时重定向)
浏览器处理307状态的规则与302同样。
307状态被增加到 HTTP 1.1中是因为很多浏览器在收到302响应时即使是原始消息为POST的情况下仍然运行了错误的转向。仅仅有在收到303响应时才假定浏览器会在POST请求时重定向。增加这个新的状态码的目的非常明白:在响应为303时依照GET和POST请求转向;而在307响应时则依照GET请求转向而不是POST请求。该状态码是新增加HTTP 1.1中的。
4XX:表示client的请求有非法内容
400 (Bad Request/错误请求)
400指出client请求中的语法错误。
401 (Unauthorized/未授权)
401表示client在授权头信息中没有有效的身份信息时訪问受到password保护的页面。
这个响应必须包括一个WWW-Authenticate的授权信息头。
403 (Forbidden/禁止)
403的意思是除非拥有授权否则server拒绝提供所请求的资源。这个状态常常会因为server上的损坏文件或文件夹许可而引起。
404 (Not Found/未找到)
404状态每一个网络程序猿可能都遇到过,他告诉client所给的地址无法找到不论什么资源。它是表示“没有所訪问页面”的标准方式。
405 (Method Not Allowed/方法未同意)
405指出请求方法(GET, POST, HEAD, PUT, DELETE, 等)对某些特定的资源不同意使用。该状态码是新增加 HTTP 1.1中的。
406 (Not Acceptable/无法訪问)
406表示请求资源的MIME类型与client中Accept头信息中指定的类型不一致。
406是新增加 HTTP 1.1中的。
407 (Proxy Authentication Required/代理server认证要求)
407与401状态有些相似。仅仅是这个状态用于代理server。该状态指出client必须通过代理server的认证。代理server返回一个Proxy-Authenticate响应头信息给client。这会引起client使用带有Proxy-Authorization请求的头信息又一次连接。该状态码是新增加 HTTP 1.1中的。
408 (Request Timeout/请求超时)
408是指服务端等待client发送请求的时间过长。该状态码是新增加 HTTP 1.1中的。
409 (Conflict/冲突)
该状态通常与PUT请求一同使用,409状态常被用于试图上传版本号不对的文件时。该状态码是新增加 HTTP 1.1中的。
410 (Gone/已经不存在)
410告诉client所请求的文档已经不存在而且没有更新的地址。
410状态不同于404。410是在指导文档已被移走的情况下使用。而404则用于未知原因的无法訪问。
该状态码是新增加 HTTP 1.1中的。
411 (Length Required/须要数据长度)
411表示server不能处理请求(如果为带有附件的POST请求),除非client发送Content-Length头信息指出发送给server的数据的大小。该状态是新增加 HTTP 1.1的。
412 (Precondition Failed/先决条件错误)
412状态指出请求头信息中的某些先决条件是错误的。该状态是新增加 HTTP 1.1的。
413 (Request Entity Too Large/请求实体过大)
413告诉client如今所请求的文档比server如今想要处理的要大。假设server觉得可以过一段时间处理。则会包括一个Retry-After的响应头信息。该状态是新增加 HTTP 1.1的。
414 (Request URI Too Long/请求URI过长)
414状态用于在URI过长的情况时。
这里所指的“URI”是指URL中主机、域名及port号之后的内容。该状态是新增加 HTTP 1.1的。
415 (Unsupported Media Type/不支持的媒体格式)
415意味着请求所带的附件的格式类型server不知道怎样处理。
该状态是新增加 HTTP 1.1的。
416 (Requested Range Not Satisfiable/请求范围无法满足)
416表示client包括了一个server无法满足的Range头信息的请求。该状态是新增加 HTTP 1.1的。
417 (Expectation Failed/期望失败)
假设server得到一个带有100-continue值的Expect请求头信息,这是指client正在询问能否够在后面的请求中发送附件。在这样的情况下,server也会用该状态(417)告诉浏览器server不接收该附件或用100状态告诉client能够继续发送附件。
该状态是新增加 HTTP 1.1的。
5XX:表示server未能正常处理client的请求而出现意外错误
500是经常使用的“server错误”状态。
501 (Not Implemented/未实现)
501状态告诉clientserver不支持请求中要求的功能。比如。client运行了如PUT这种server并不支持的命令。
502 (Bad Gateway/错误的网关)
502被用于充当代理或网关的server;该状态指出接收server接收到远端server的错误响应。
503 (Service Unavailable/服务无法获得)
状态码503表示server因为在维护或已经超载而无法响应。
504 (Gateway Timeout/网关超时)
该状态也用于充当代理或网关的server。它指出接收server没有从远端server得到及时的响应。该状态是新增加 HTTP 1.1的。
505 (HTTP Version Not Supported/不支持的 HTTP 版本号)
505状态码是说server并不支持在请求中所标明 HTTP 版本号。
该状态是新增加 HTTP 1.1的。
9. Http request的几种方法
- GET: 请求指定的页面信息。并返回实体主体
- HEAD: 仅仅请求页面的首部。
- POST: 请求server接受所指定的文档作为对所标识的URI的新的从属实体
- PUT: 从client向server传送的数据代替指定的文档的内容
- DELETE: 请求server删除指定的页面
- OPTIONS: 同意client查看server的性能
- TRACE: 请求server在响应中的实体主体部分返回所得到的内容
- PATCH: 实体中包括一个表。表中说明与该URI所表示的原内容的差别
- MOVE: 请求server将指定的页面移至还有一个网络地址
- COPY: 请求server将指定的页面拷贝至还有一个网络地址
- LINK: 请求server建立链接关系
- UNLINK: 断开链接关系
- WRAPPED: 同意client发送经过封装的请求
- CONNECT:用于动态切换到隧道的代理
10. Http1.1和Http1.0的差别
- 是否同意复用连接:Http1.0不同意,响应请求后就断开连接。Http1.1同意且默认开启连接复用
- Host头域:Http1.0没有,Http1.1有
- 状态码:Http1.1比Http1.0多了100,101,203,205等状态码,详见问题8
- 请求方式:Http1.0仅仅有GET、HEAD和POST方法,Http1.1新增了其它多种方法。详见问题9
TCP/IP常见问题总结(二)的更多相关文章
- TCP/IP协议(二)tcp/ip基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
- TCP/IP协议(二)
2014-09-04 11:03:27 注:关于seq 和 ack 的理解,seq为发送的字节的第一个序号,一直累加,ack接收字节的最后一个序号+1,建立连接和结束连接时的SYN.FIN标志位占 ...
- TCP/IP协议学习(二) LWIP用户自定义配置文件解析
LWIP协议支持用户配置,可以通过用户裁剪实现最优化配置,LWIP默认包含opts.h作为系统默认配置,不过通过添加lwipopts.h文件并包含在opts.h头文件之前就可以对lwip进行用户裁剪, ...
- TCP/IP协议族(二) HTTP报文头解析
本篇博客我们就来详细的聊一下HTTP协议的常用头部字段,当然我们将其分为请求头和响应头进行阐述.下方是报文头每个字段的格式,首先是头部字段的名称,如Accept,冒号后方紧跟的是该字段名所对应的值,每 ...
- OSI模型和TCP/IP协议族(二)
OSI模型中的各层 物理层 物理层(physical layer)协调通过物理媒体传送比特流时所需要的各种功能.物理层涉及到接口和传输媒体的机械和电器规约.它还定义了这些物理设备即接口为了实现传输必须 ...
- TCP/IP详解 笔记十四
TCP/IP协议(二) 连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...
- RocEDU.阅读.写作《图解TCP/IP》
2015年11月21日 一.对本书的认识 信息通信社会这个词俨然是现代社会的一个名词.人们可以使用各种信息终端随时随地的进行交流,而这种环境正是以来网络才得以实现,使用最为广泛的协议就是TCP/IP协 ...
- 计算机网络及TCP/IP知识点(全面,慢慢看)
TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是网络的网络. 2.分类: 根据作用范围分类: 广域网 WAN (Wide Area Networ ...
- TCP/IP网络知识点总结
学完了计算机网络是时候整理一篇总结了,温故知新.注意:这篇博客很长长长(2.5万字+50图). TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是 ...
随机推荐
- JS的type类型为 text/template
JS标签中有时候会看见<script type="text/tmplate" >,大概就是一个放置模板的地方,而这些东西并不显示在页面 在js里面,经常需要使用js往页 ...
- A10. JVM 对象
[概述] 首先需要了解对象在内存中的存储布局,其次需要了解对对象的访问定位. [对象的内存布局] 在 HotSpot 虚拟机中,对象在内存中存储的布局可以分为 3 块区域:对象头(Header).实例 ...
- Linux C下变量和常量的存储的本质
源代码 #cat main.c #include <stdio.h> int i = 100; int main(void) { func(); return 0; } #cat func ...
- IDEA、Eclipse快捷键对比
IDEA.Eclipse快捷键对比 序号 功能 IDEA Eclipse 1 很多功能:导入包,处理异常,强转cast Alt+Enter 2 导入包,自动修正??? Ctrl+Enter 3 ...
- [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)2
最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为 5 个中文字词,输出为 1 个中文字词.目录 关于RNN 语料预处理 搭建 ...
- Android ListView setEmptyView
http://my.eoe.cn/yaming/archive/879.html 1 当我们使用ListView或GridView的时候,当列表为空的时候,我们需要一个特殊的View来提示用户操作,于 ...
- 初识Typescript及vscode环境配置
什么是typescript?为什么要用它? typescript简称ts,是js语法的一个超级,由微软团队维护的 js特点(不足) 弱类型:js中的数据变量没有确定的类型,可以存储对象,可以存储数字, ...
- 【牛客小白月赛6】 C 桃花 - 树上最长路
题目地址:https://www.nowcoder.com/acm/contest/136/C dfs找出最长路和次长路,将两个结果相加再加上起点即可: #include<iostream> ...
- BZOJ 2055 80人环游世界 有上下界最小费用可行流
题意: 现在有这么一个m人的团伙,也想来一次环游世界. 他们打算兵分多路,游遍每一个国家. 因为他们主要分布在东方,所以他们只朝西方进军.设从东方到西方的每一个国家的编号依次为1...N.假若第 ...
- ruby on rails安装(win7x64)
Ruby下载地址http://rubyinstaller.org/downloads/ (以安装2.1.7为例,2.2.3未能安装成功) 安装完之后测试是否安装成功