HTTP协议介绍

1、TCP/IP网络模型

OSI七层网络模型:自下而上分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP网络模型分为4层,自下而上分别为:

  • 链路层:
    • 对应OSI的物理层、数据链路层;
    • 处理数据在媒介上的表示、传输以及与硬件交互的细节。
  • 网络层:
    • IP层负责IP数据报的路由转发,所有的TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。
    • 网络层(IP)提供了一种尽力而为、无连接、不可靠的数据报交付服务,IP负责将IP数据报(又叫分组),放入数据链路层传输,负责分片和重组逻辑。
  • 传输层:
    • 为端主机上运行的应用程序提供端到端服务,包括TCP和UDP。
    • TCP提供了带流量控制、拥塞控制、有序、可靠的流交付,TCP需要处理丢包检测重传、重排序等IP层不处理的问题,TCP面向连接,不保留消息边界;
    • 而UDP提供的功能基本上没有超越IP,不提供速率控制和差错控制,不保证可靠性,UDP只是提供一套端口号,用于复用、多路分解(即把收到的UDP数据报交给应用层对应程序处理)和校验数据完整性(只检错不纠错),UDP面向非连接,保留消息边界。
  • 应用层:
    • 对应OSI的会话层、表示层、应用层;
    • 负责处理特定应用的细节,通常应用的实现都是基于TCP/IP或者UDP/IP,具体如HTTP、FTP、DNS、SSH协议等。
    • 应用层与应用细节相关,与网络数据传输无关,而之下的三层(链路层、网络层、传输层)则对应用一无所知,但需要处理通信的细节。

1.1、IP协议

IP是TCP/IP协议族中的核心协议,为传输层提供IP数据报的交付能力,它负责将IP数据报从网络一端传递到另一端,实现数据转发。IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

发送端:接收来自传输层协议的数据单元(PDU),添加IP首部封装为IP数据报,交给下一层链路层协议。

接收端:接收来自链路层的PDU,去掉IP首部,根据首部的协议类型,将数据分发给上一层传输层的TCP、UDP或者其他协议。

IP主要包含三方面内容:IP编址方案、分组封装格式及分组转发规则。

  • 路由器:

工作于网络层,是IP层的核心设备,实现传输层之下的所有层。路由器有两个或两个以上的网络接口,用于连接两个或多个网络,负责将IP数据报(分组)从一个网络接口转发到另一个网络接口,带有多网络接口(网卡)的主机也能承担转发分组的功能,这种主机称为作为路由器使用的主机。

  • IP协议格式:
    • IP数据报应该是包括
      • IP首部:其前20字节是所有IP分组必须具有的,
        • 4位协议版本号字段:区分IPv4、IPv6;
        • 4位首部长度:表示IP首部长度。最大数值是15 * 4个字节;
        • 8位服务类型:
        • 16位总长度:
        • 16位标识:
        • 3位标志字段:
        • 13位分片偏移:
        • 8位生存时间TTL:
        • 8位协议字段:区分数据报承载TCP、UDP等哪种协议;
        • 16位头部校验和。
        • 32位源IP地址:
        • 32位目的IP地址;
        • 选项字段:最多40字节;
      • 数据负载
        • 不透明的负载(Payload)来自于TCP、UDP或者其他,对于IP层透明,无须解释。
  • IP协议转发流程:仅从网络层分析:
    • A发出目的地址为C的IP数据报,查询路由发现下一跳为E
    • A将数据报发送给E
    • E查询路由表发现下一跳为F,将数据报发送给F
    • F查询路由表发现目的地C直接连接,将数据发送给C

1.2、TCP协议

传输控制协议:提供面向连接、可靠、有序、字节流传输服务。TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

  • 三次握手过程:在正式使用之前,先要检测网络是否通畅,具体过程:

    • 客户端准备建立TCP连接时,向服务端发出连接请求报文段(首部中同步位SYN=1,初始序号seq=x)。这时,客户端TCP进程进入SYN-SENT(同步已发送)状态。
    • 服务端收到连接请求报文段后,如果同意建立连接,则向客户端发送确认报文段(同部位SYN=1,确认位ACK=1,确认号ack=x+1,初始序号seq=y)。这时,TCP服务端进入SYN-RCVD(同步收到)状态。
    • 客户端收到服务端的确认后,还要向服务端发送确认报文段(确认位ACK=1,确认号ack=y+1,序号seq=x+1)。A进入ESTABLISHED(已建立连接)状态。
    • B收到A的确认后,也进入ESTABLISHED状态。

    总结:请求连接则置同步位SYN=1,确认连接就置确认位ACK=1(TCP规定,SYN报文段不能携带数据,但要消耗一个序号;ACK报文段可以携带数据,但如果不携带数据则不消耗序号)。

  • 四次挥手过程:挥手就是断开连接的过程,具体过程:

    • A的应用进程先向B发送连接释放报文段(终止控制位FIN=1,序号seq=u),并停止发送数据,进入FIN-WAIT-1(终止等待1)状态。
    • B收到连接释放报文段后即发出确认报文段(确认位ACK=1,序号seq=v,确认号ack=u+1),然后B进入CLOSE-WAIT(关闭等待)状态。此时A到B方向的连接已经释放,B若要发送数据,A仍要接收。
    • A收到来自B的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。
    • B若没有要向A发送的数据了,就发送连接释放报文段(终止位FIN=1,序号seq=w,确认号ack=u+1),然后B就进入LAST-ACK(最后确认)状态,等待A的确认。
    • A收到B的连接释放报文段后,必须对此发出确认(ACK=1,ack=w+1,seq=u+1)。然后进入TIME-WAIT(时间等待)状态。此时,TCP连接还没有释放掉。必须经过2倍最长报文段寿命(MSL)时间后(通常MSL=2分钟,保证A发送的最后一个ACK报文段能够到达B,防止“已失效的连接请求报文段”出现在本连接中),TCP连接结束。

    总结:请求释放连接则置FIN=1,确认释放则置ACK=1。

  • 保活计时器:

    • 客户端主机出现故障时,服务器会白白等待下去。为此需要设置保活计时器。服务器每收到一次客户的数据&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值