(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。html
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN同样,一个FIN将占用一个序号。程序员
(3)服务器B关闭与客户端A的链接,发送一个FIN给客户端A(报文段6)。算法
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。浏览器
其实,GET和POST本质上二者没有任何区别。他们都是HTTP协议中的请求方法。底层实现都是基于TCP/IP协议。所谓区别,只是浏览器厂家根据约定,作得限制而已。缓存
栈(操做系统):由操做系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操做方式相似于数据结构中的栈。服务器
堆(操做系统): 通常由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式却是相似于链表。cookie
栈使用的是一级缓存, 他们一般都是被调用时处于存储空间中,调用完毕当即释放。session
堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并非一旦成为孤儿对象就能被回收)。因此调用这些对象的速度要相对来得低一些。数据结构
栈由系统自动分配,速度较快。但程序员是没法控制的。
堆是由new分配的内存,通常速度比较慢,并且容易产生内存碎片,不过用起来最方便。
栈: 在函数调用时,在大多数的C编译器中,参数是由右往左入栈的,而后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,而后是参数,最后栈顶指针指向函数的返回地址,也就是主函数中的下一条指令的地址,程序由该点继续运行。
堆:通常是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排。
其余知识点参考:juejin.im/post/5bb2d1…
存储位置不一样:cookie存储在客户端,是客户端保存用户信息的一种机制,用来记录用户的一些信息。每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。session存储在服务端,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应,这个id会被传递给客户端放置于cookie中,从而识别用户。
删除权限不一样:cookie能够由用户在浏览器设置中清除,session则只能由服务端经过validate或者是过时后自动删除。
cookie相对而言不够安全
单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie;session保存的数据大小不受限制,但太多了也会损耗服务器性能,因此仍是根据须要适当分配cookie和session。
参考:www.cnblogs.com/Lzf127/p/89…
Accept浏览器能够接受的媒体类型 Accept-Encoding浏览器能够接受的编码方法 Accept-Language申明本身能够接受的语言 Host也就是域名 Connectionkeep-alive或者close cache-control好比no-cache Referer告诉服务器我是从哪一个页面连接过来的 User-Agent告诉HTTP服务器, 客户端使用的操做系统和浏览器的名称和版本
采用两次握手,那么若Client向Server发起的包A1若是在传输链路上遇到的故障,致使传输到Server的时间至关滞后,在这个时间段因为Client没有收到Server的对于包A1的确认,那么就会重传一个包A2,假设服务器正常收到了A2的包,而后返回确认B2包。因为没有第三次握手,这个时候Client和Server已经创建链接了。再假设A1包随后在链路中传到了Server,这个时候Server又会返回B1包确认,可是因为Client已经清除了A1包,因此Client会丢弃掉这个确认包,可是Server会保持这个至关于“僵尸”的链接。
GET:对服务器资源的简单请求
POST:用于发送包含用户提交数据的请求
HEAD:相似于GET请求,不过返回的响应中没有具体内容,用于获取报头
PUT:传说中请求文档的一个版本
DELETE:发出一个删除指定文档的请求
TRACE:发送一个请求副本,以跟踪其处理进程
OPTIONS:返回全部可用的方法,检查服务器支持哪些方法
CONNECT:用于ssl隧道的基于代理的请求
由于TCP有个半关闭状态,假设A.B要释放链接,那么A发送一个释放链接报文给B,B收到后发送确认,这个时候A不发数据,可是B若是发数据A仍是要接受,这叫半关闭。而后B还要发给A链接释放报文,而后A发确认,因此是4次。
在tcp链接握手时为什么ACK是和SYN一块儿发送,这里ACK却没有和FIN一块儿发送呢。缘由是由于tcp是全双工模式,接收到FIN时意味将没有数据再发来,可是仍是能够继续发送数据。
IP地址是逻辑上的,用户能够修改本身设备的IP地址,Mac地址是物理上的,直接烧入物理设备,好比路由器,用户不能轻易修改。
IP地址负责标记发送方和接收方,而MAC地址负责传输过程当中的分段传送,两者缺一不可。