网络通信协议-TCP/IP+Http

1 OSI模型

一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。

  • 物理层 例如线路、无线电、光纤、信鸽
  • 链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
  • 网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
  • 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
  • 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
  • 表示层 例如XDR、ASN.1、SMB、AFP、NCP
  • 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP

2 TCP/IP协议

2.1 TCP/IP协议的定义

是指能够在多个不同网络间实现信息传输的协议簇

2.1 TCP/IP协议的分层

TCP/IP协议族按照层次由上到下,层层包装

2.1.1 应用层

  • 浏览器和服务端之间通信所用的协议是HTTP协议,所传输数据的主要格式为HTML
  • 发送电子邮件时用到的协议是SMTP。
  • 文件传输(FTP)
  • 远程登录常用TELNET与SSH两种协议。远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。
  • 网络管理(SNMP)

2.1.2 传输层

传输层最主要的功能是能够让应用程序之间实现通信,并且定义了两种服务质量不同的协议

  • TCP协议是一个面向连接的、可靠的协议。它可以保证两端通信主机之间的通信可达。
  • UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。

2.1.3 网络层

IP协议负责对数据加上IP地址和其他的数据以确定传输的目标

2.1.4 链路层

包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。链路层为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备

2.2 TCP/IP协议通信的过程

通信的过程其实就对应着数据装包与拆包的过程。装包的过程,数据发送方每层不断地封装首部,添加一些信息用于传输,确保能传输到目的地。拆包的过程,数据接收方每层不断地拆除首部,得到最终传输的数据
在这里插入图片描述

2.3 如何建立TCP/IP连接?(三次握手)

在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。

  • 第一次握手:客户端发送一个TCP标志位SYN=1,ACK=0的数据包给服务端,并随机会产生一个Seq=J.当服务端接收到这个数据后,服务端由SYN=1可知客户端是想要建立连接;
  • 第二次握手:服务端要对客户端的联机请求进行确认,向客户端发送应答号ACK=1、SYN=1,确认号ack=J+1,此值是客户端的序列号加1,还会产生一个随机的序列号Seq=K,这样就告诉客户端可以进行连接;
  • 第三次握手:客户端收到数据后检查Ack是否为J+1,以及标志位ACK的值是否为1,若为1,则会发送ACK=1、确认号码ack=K+1,告诉服务端,你的请求连接被确认,连接可以建立,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

2.4 为什么要三次握手?

为了防止已失效的连接请求突然又传送到了服务端,因而产生错误。
三次握手是在安全可靠的基础上,握手次数最少的方案。两次握手并不能保证可靠性。四次握手又浪费了效率,当然,有的需要更高安全性的地方,是可以有N次握手协议的,但那是特殊情况。

2.5 四次挥手

  • 第一次挥手:客户端客户端发送一个,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),并且停止发送数据。此时,客户端进入FIN-WAIT-1(终止等待1)状态;
  • 第二次挥手:
  • 服务端要对客户端的请求进行确认,向客户端发送应答号ACK=1,确认号ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受;
  • 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  • 第三次挥手:
    服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  • 第四次挥手:
  • 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,撤销TCB后才进入CLOSED状态。
  • 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。服务器结束TCP连接的时间要比客户端早一些。

2.6 为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

2.7 简述IP、TCP和DNS

IP协议:IP协议的作用在于找到对方的详细地址,把各种数据包准确无误的传递给对方
TCP协议:TCP协议就是把安全的把东西带给对方
DNS:和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务

3 HTTP协议

主要规定了浏览器给服务器发送的请求信息的格式以及规定了服务器给浏览器发送响应信息的格式

3.1 HTTP协议的基本原则

HTTP协议基于请求响应模型

  • 一次请求,只对应一次响应
  • 请求只能由浏览器发起,服务器只能被动的等待请求,根据请求作出回应

3.2 HTTP协议的特点

  1. 它是一个无状态的协议,服务器端在处理相应请求后不会保留任何客户端的信息,每次请求都是独立的
  2. 客户端与服务器端的每一次数据交互,都要经过一次请求/响应的过程。

3.3 HTTP请求

在这里插入图片描述

3.4 HTTP响应

在这里插入图片描述

状态码

  • 200: 表示请求处理成功
  • 302: 表示请求重定向(即需要再进一步请求才可以获取到相应的资源)
  • 304/307: 表示通知浏览器使用缓存
  • 404: 表示浏览器请求的资源不存在(浏览器的问题, 请求路径错误)
  • 500: 表示服务器在处理请求的过程中抛出了异常。

3.5 什么是HTTP隧道

HTTP隧道是一种利用HTTP或者是HTTPS把多种网络协议封装起来进行通信的技术。
HTTP协议扮演了一个打通用于通信的网络协议的管道的包装器的角色。
把其他协议的请求掩盖成HTTP的请求就是HTTP隧道。

3.6 HTTP 与 HTTPS 的区别

  1. HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)
  2. HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  3. HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值