计算机网络 - Http协议和Tcp/IP协议族

正好计算机网络期末复习完,总结一下,计网的知识感觉贼多,而且虽然分层,但每层联系紧密,所有知识都分割不了,所以就简单总结一些以后找工作可能要用的。

关于Tcp/IP协议和Http协议

Tcp/IP协议是由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
协议采用了4层的层级结构(应用层,传输层,互联网层,互联接口层),
每一层都呼叫它的下一层所提供的协议来完成自己的需求。
通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,
直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

Http协议HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
HTTP协议工作于客户端-服务端架构为上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。

总之TCP/IP协议是主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
这段介绍很容易理解:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,
如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,
应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。
WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

Http协议

Http协议的特点

无状态:大概是指它没有记忆能力,不会维持某一个状态,每一次请求都是独立的,与之前或之后都没关系。
       这一特点也就体现了cookie和session的作用,用他俩来维持状态,维持会话。
无连接:(并非不连接,而是短连接,更关注于服务)无连接的含义是限制每次连接只处理一个请求。
        服务器处理完客户的请求,并收到客户的应答后,就断开连接。采用这种方式可以节省传输时间。Http1.1是持续连接的。
简单快速灵活:

Http协议的请求

请求就是也就是客户端通过Http协议发送给服务器的内容。
它包括三部分(也可以分四部分大概):
    请求行:用来说明请求类型,要访问的资源以及所使用的HTTP版本.
    请求头(消息头):用来说明服务器要使用的附加信息(客户端的)
    这有个空行:
    请求体(get没有):请求数据也叫主体,可以添加任意的其他数据。

请求
HTTP请求方法:
有GET,POST,HEAD,PUT,DELETE,CONNECT,OPTIONS,TRACE.
常用的就是Get和post。
Get:请求数据,请求指定的页面信息,并返回实体主体。它没有请求体。
POST:提交数据请求处理,向指定资源提交数据进行处理请求(例如提交表单),数据就放在请求体中。
Http协议的响应

响应就是服务器返回给客户端的内容。
它也保护三部分(与请求是类似的):
    状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成。
    响应头(消息头):用来说明客户端要使用的附加信息(服务器的)
    这有一个空行:
    响应体:服务器返回给客户端的文本信息。


状态行中状态码:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
    200 ok
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
    404
5xx:服务器端错误--服务器未能实现合法的请求
    500

Http工作流程

1.客户端(浏览器)连接到Web服务器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
2.通过TCP套接字,客户端向Web服务器发送请求报文。
3.Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,返回响应,由客户端读取。
4.释放连接TCP连接。(分为)
5.客户端浏览器解析响应内容

Tcp/IP协议

Tcp报文
Tcp报文

其中标志位很重要,建立连接和释放连接都是通过标志位的识别进行的。
ACK:确认序号有效
RST:重置连接
SYN:发起了一个新连接
FIN:释放一个连接

建立连接 - 三次握手
这里写图片描述
服务器返回响应报文那里的ack=x+1

第一次握手:主机A发送位码为SYN=1,随机产生seq=x的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack=(主机A的seq+1)x+1,SYN=1,ACK=1,随机产生seq=y的包
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq+1,以及位码ACK是否为1,
            若正确,主机A会再发送ack=(主机B的seq+1)y+1,ACK=1,主机B收到后确认seq值与ACK=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。
TCP协议建立连接的三次握手过程中的第三次握手允许携带数据。
理想状态下,TCP连接一旦建立,在通信双方中的任何一方主 动关闭连接之前,TCP 连接都将被一直保持下去。

释放连接 - 四次挥手
这里写图片描述

一挥手:客户端A发送一个FIN=1用来关闭客户A到服务器B的数据传送和初始数据包序号seq=u,A进入FIN_WAIT_1状态。 
二挥手:服务器B收到这个FIN,它发回一个ACK=1,确认序号ack=(收到的序号+1)u+1,以及初始数据包序号seq=v,B进入CLOSE_WAIT状态。
        A到B的这个方向的连接也就释放了(但只是单方面的释放,即tcp连接处于半关闭状态,整个tcp连接要双方都释放才算真正的释放了,这时只表示A没有数据要向B发送了,但B若发送数据,A仍要接收,所以第四次A还要向B发出确认(不是数据))。
三挥手:服务器B要关闭与客户端A的连接,发送一个FIN=1,ACK=1,seq=w,ack=u+1给客户端A,A进入FIN_WAIT_2状态。 
四挥手:客户端A发回ACK=1,sqe=u+1,ack=w+1报文确认,进入TIME_WAIT状态,注意此时Tcp仍没完全释放掉。
       这是为了为了保证A发送的最后一个ACK报文段能够到达B和防止“已失效的连接请求报文段”出现在本连接中
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值