综合各位前辈资料。

在这里插入图片描述

1、名词解释

协议:是双方进行数据传输的一种格式。
OSI :open system interconnection,开放式系统互联,ISO发起,其任务是制定国际计算机通信标准,特别是促进兼容系统间的互联。
www:world wide web 万维网
HTML:hyper text markup language 超文本标记语言
CGI:common gateway interface 通用网关接口
MIME-type:multipurpose internet mail extensions 多用途因特网邮件扩展
URL:uniform resource locator 统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URI:uniform resource identifiers 统一资源标识符
Servlet:Server Applet,是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
ASP:active server pages,是MicroSoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。
HTTP:hyper text transfer protocol 超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的传送协议。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。
TCP/IP:transmission control protocol 传输控制协议;Internet protocol address 互联网协议地址
FTP:file tansfer protocol 文件传输协议
CRLF:carriage return line feed 传输返回行“饲料”,在计算机中,即 回车换行,enter键。
TLS:transport layer security 传输层安全协议
SSL:secure sockets layer 安全套接层
DNS:domain name system 域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
UDP:user datagram protocol 用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中与TCP协议一样用于处理数据包,是一种无连接的协议。
Hub:集线器,是工作在物理层的网络设备,用于双绞线的连接和信号中断(将已衰减的信号再次放大使之传得更远)。
Switch:交换机,是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如 十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
Route:路由器,是工作在网络层的网络设备,同时兼有交换机的功能,阔以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。
MAC地址:media access control address,媒体访问控制地址(也称为 局域网地址(LAN Adress)/以太网地址(Ethernet Address)/物理地址(Physical Address)),是一个用来确认网上设备位置的地址。在OSI模型中,由第2层数据链路层负责MAC地址。MAC地址用于在网络中唯一表示一个网卡(一台设备若有多个网卡,则每个网卡都需要并会有一个唯一的MAC地址)。
SSH:Secure Shell缩写(安全壳),是一种通用的、功能强大的、基于软件的网络安全解决方案,由IETF的网络工作小组所制定。计算机每次向网络发送数据时,SSH都会自动对其进行加密。SSH是创建在应用层和传输层基础上的安全协议。专为远程登录会话和其他网络服务提供安全性的协议,利用它可以有效防止远程管理过程中的信息泄露问题,通过它可以对所有传输的数据进行加密,也能防止DNS和IP欺骗。很多人使用OpenSSH(SSH的替代软件包、SSH免费的开源实现),因为免费,而且不受版权和加密算法的限制。简而言之,SSH是一种安全访问远程服务器的网络协议。举例:通过SSH服务,实现本机(Ubuntu,也可以是Win下)与远程服务器(如 腾讯云服务器提供的Ubuntu系统)之间的连接,能够在本地对服务器进行操作(如:从服务器上下载文件、上传本地文件到服务器等操作)

OSI 七层结构

层级名称数据格式功能与连接方式包含的协议功能典型设备
7应用层 Application数据Data网络服务与使用者应用程序间的一个接口HTTP、FTP、SMTP、SNMP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP文件传输,电子邮件,文件服务,虚拟终端终端设备(PC、手机、平板等)
6表示层 Presentation数据Data数据表示、数据安全、数据压缩如XDR、ASN.1、SMB、AFP、NCP数据格式化,代码转换,数据加密终端设备(PC、手机、平板等)
5会话层 Session数据Data会话层连接到传输层的映射;会话连接的流量控制;数据传输;会话连接恢复与释放;会话连接管理、差错控制如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets解除或建立与别的结点的联系终端设备(PC、手机、平板等)
4传输层 Transport数据组织成数据段Segment用一个寻址机制来标识一个特定的应用程序(端口号)TCP、UDP、RTP、SCTP、SPX、ATP、IL提供端对端的接口终端设备(PC、手机、平板等)
3网络层 Network分割和重新组合数据包Packet基于网络层地址(IP地址)进行不同网络系统间的路径选择IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25为数据包选择路由路由器
2数据链路层 Data Link将比特信息封装成数据帧Frame在物理层上建立、撤销、标识逻辑链接和链路复用、以及差错校验等功能。通过使用接收系统的硬件地址或物理地址来寻址如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP传输有地址的帧以及错误检测功能网桥、交换机、中继器
1物理层 Physical传输比特(bit)流建立、维护、取消物理连接如线路、无线电、光纤、信鸽以二进制数据形式在物理媒体上传输数据光纤、同轴电缆、 双绞线、网卡

IP 比作一个高速公路,它允许其他协议在上面行使并找到 到其他电脑的出口。

TCP、UDP是高速公路上的卡车,它们携带的货物就像HTTP、FTP协议。(TCP、UDP都是用来传输其他协议的)

每个IP地址 都包括两个标识码(ID)网络ID、主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站、服务器、路由器等)有一个主机ID与其对应。
Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。其中A、B、C类由InternetNIC在全球范围内统一分配,D、E类为特殊地址。

类别最大网络数IP地址范围最大主机数私有IP地址范围
A126(2^7-2)0.0.0.0-127.255.255.2551677721410.0.0.0-10.255.255.255
B16384(2^14)128.0.0.0.-191.255.255.25565534172.16.0.0-172.31.255.255
C2097152(2^21)192.0.0.0-223.255.255.255254192.168.0.0-192.168.255.255

TCP/IP 是传输层协议,主要解决数据如何在网络传输HTTP 是应用层协议,主要解决如何包装数据

TCP/IP网络协议栈 分为应用层(Application)、传输层(Transport)、网络层(Network)、链路层(Link)4层。

层名包含的协议
应用层Telnet、FTP、e-mail等
传输层TCP和UDP
网络层IP、ICMP和IGMP
链路层设备驱动程序及接口卡

通信过程中,每层协议都要加上一个数据首部(header),称之为封装(Encapsulation)
在这里插入图片描述

不同的协议层对数据包有不同的称谓:在传输层称为段(segment);在网络层称为数据报(datagram);在链路层称为帧(frame)。

数据封装成后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

在链路层下的物理层,指的是电信号的传递方式,如现在以太通用的网线(双绞线)、早期以太网采用的同轴电缆(现在一般用于有线电视)、光纤等都属于物理层的概念。

网络层的IP协议 是构成Internet的基础。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性阔以在上层协议或应用程序中提供支持。

传输层可选择TCP 或UDP协议:

  • TCP 是一种面向连接的、可靠的协议,可类比打电话:双方拿起电话互通身份后就建立了连接,然后说话就行了,双方说的话都保证能听到,并且是按说话的顺序听到的,说完话挂机断开连接。即TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠数据流,通讯之后关闭连接。
  • UDP 协议不面向连接,也不保证可靠性,可类比寄信:写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。

数据传输经过的各层协议过程如下:
在这里插入图片描述
以太网驱动程序 首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,是指 除去协议首部之外实际传输的数据)是IP、ARP、还是RAPP协议的数据报,然后交给相应的协议处理。

  • 假如是IP数据报,IP协议再根据IP 首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理;
  • 假如是TCP段 或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程;
  • IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。
  • 虽然IP、ARP、RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。
  • 虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。

以太网帧格式
在这里插入图片描述

  • 源地址、目的地址 是指网卡的硬件地址(MAC地址),长度是48位,是在网卡出厂时固化的;
  • 网卡芯片(如DM9000A)收到的数据即如上所示的一长串数据。其中包括以太网帧头、IP报报头、传输层协议段头、应用层所需数据。
  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包都大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。ifconfig命令的输出中也有“MTU:1500”。不过注意,MTU 指数据帧中有效载荷的最大长度,不包括帧首部的长度。

IP数据报格式:IPv4
在这里插入图片描述

  • IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。
  • 对于IPv4,4位版本字段是4,。4位首部长度的数值是以4字节为单位的,最小值为5,即 首部长度最小是4*5=20字节,不带任何选项的IP首部,4位能表示的最大值是15,那么首部长度最大是40字节。
  • 8位TOS字段有3个位用于指定IP数据报的优先级(目前已废弃不用),还有4个位表示可选的服务类型(最小延迟、最大吞吐量、最大可靠性、最小成本),还有一个位总是0。
  • 总长度是整个数据报(包括IP首部、IP层payload)的字节数。每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。其中,3位标志和13位片偏移用于分片。
  • TTL(Time to live)的使用:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。
  • 协议字段 用于指示上层协议是TCP、UDP、ICMP还是IGMP。
  • 校验和:只校验IP首部,数据的校验由更高层协议负责。
  • IPv4地址长度为32位。

UDP段格式
在这里插入图片描述
UDP协议不面向连接,也不保证传输的可靠性。

TCP段格式
在这里插入图片描述
1)、序号:指出段中的数据部分在发送方数据流中的位置
确认号:指出接收方希望收到对方下次发送的数据的第一个字节的序号
TCP段首部的定长部分为20个字节,即5个单位的长度。
URG位:紧急标志,和紧急指针配合使用,当其为1时表示,此报文要尽快传送。
ACK位:确认标志,和确认号字段配合使用,当ACK位置为1时,确认号字段有效。
PSH位:为推送标志,置1时,发送方将立即发送缓冲区的数据。
RST位:复位标志,置1时,表明有严重差错,必须释放连接。
SYN位:同步标志,置1时,表示请求建立连接。
FIN位:终止标志,置1时,表明数据已经发送完,请求释放连接。
窗口大小:32bit,用于向对方通告当前本机的接收缓冲区的大小。
校验和字段长度:16bit,校验范围包括段首部、数据以及伪首部。

2)TCP数据传输过程
在这里插入图片描述
3)TCP连接的建立
建立连接的过程:(三次握手
【1】客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端阔以根据序号排出数据包的正确顺序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占一个序号,这次虽然没发数据,但是由于发了SYN位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。
【2】服务器发出段2,也带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我接收到序号1000 以及以前所有的段,请你下次发送序号为1001的段”,即应答了客户端的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024。
【3】客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。
在这个过程中,客户端、服务器分别给对方发了连接请求,也应答了对方的连接请求,其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为“三方握手(three-way-handshake)”。在建立连接的同时,对方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等。

4)TCP数据传输过程
【1】客户端发出段4,包含从序号1021开始的20个字节数据。
【2】服务器发出段5,确认序号为1021,对序号为1001-1020的数据表示确认收到,同时请求发送序号1021开始的数据,服务器在应答的同时也向客户端从序号8001开始的10个字节数据,这称为piggyback。
【3】客户端发出段6,对服务器发来的序号为8001-8010的数据表示确认收到,请求发送序号8011开始的数据。
在数据传输过程中,ACK和确认序号是非常重要的,应用程序交给TCP协议发送的数据会暂存在TCP层的发送缓冲区中,发出的数据包给对方之后,只有收到对方应答的ACK段才知道该数据包确实发到了对方,可以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或丢失了对方发回的ACK段,经过等待超时后TCP协议自动将发送缓冲区中的数据包重发。

5)TCP连接的关闭(四次握手
【1】客户端发出段7,FIN位表示关闭连接的请求。
【2】服务器发出段8,应答客户端的关闭连接请求。
【3】服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。
【4】客户端发出段10,应答服务器的关闭连接请求。
建立连接的过程是三方握手,而关闭连接通常需要4个段(四次握手),服务器的应答和关闭连接请求通常不合并在一个段中,因为有连接半关闭的情况,这种情况下客户端关闭连接之后就不能再发送数据给服务器了,但是服务器还可以发送数据给客户端,直到服务器也关闭连接为止。

HTTP协议

一个HTTP操作 称之为一个事务,工作过程分为如下四步:
  1. 首先客户端与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
  2. 建立连接后,客户端发送一个请求给服务器。请求方式的格式为:统一资源标识符(URI)、协议版本号、MIME信息(包括请求修饰符、客户端信息和可能的内容)
  3. 服务器接到请求后,给予相应的响应信息。
  4. 客户端接到服务器所返回的信息,通过浏览器显示在用户的显示屏上,然后客户端与服务器断开连接。

一个传输流
在这里插入图片描述

作为发送端的客户端在应用层(HTTP协议)发出一个想看某个web页面的HTTP请求;
接着,为了传输方便,在传输层(TCP协议)将从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号转发给网络层。
在网络层(IP协议),增加作为通信目的地的MAC地址转发给链路层。
这样,发往网络的通信请求就准备齐全了。
接收端服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

IP协议:它的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中龙哥重要的条件是IP地址、MAC地址。其中IP地址指明了被分配到地址,MAC地址是指网卡所属的固定位置,IP地址可变换,但MAC地址基本上不会更改。

TCP协议:按层次分,TCP协议位于传输层,提供可靠的字节流服务,字节流服务指的是为了传输方便,将大块数据分割成以报文段为单位的数据包进行管理。

DNS:DNS服务是和HTTP协议位于应用层的协议,它提供域名到IP地址之间的解析服务。

一张图了解:IP协议、TCP协议、DNS服务在使用HTTP协议的通信过程中发挥了哪些作用
在这里插入图片描述

TCP协议对应于传输层
HTTP协议对应于应用层。本质上二者没有可比性。HTTP协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据时,会发出一次HTTP请求。HTTP会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,HTTP会立即将TCP连接断开,这个过程是很短的。因此 HTTP连接是一种短连接,是一种无状态的连接。

HTTP协议状态码
100~199:信息状态码,表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程;
100(continue)继续发送;
200~299:成功状态码,表示成功接收请求并已完成整个处理过程,常用200(OK)成功接收
300~399:重定向状态码,例如请求的资源已经移动一个新地址,常用302、307和304
400~499:客户端的请求有错误,常见404(Not Found),403(Fobidden)
500~599:服务器端出现错误,常用500

cookie、session异同:

  • 相同点:二者都是为了用来保存状态信息、保存客户端状态的机制、为了解决HTTP无状态的问题。
  • 不同点:
    1.cookie将状态保存在客户端;session将状态保存在服务器;
    2.cookies是服务器在本地机器上存储的小段文本,并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies,在客户端,浏览器解析这些cookies并将它们保存为一个本地文本,它会自动将同一服务器的任何请求缚上这些cookieds。session并没有字HTTP的协议中定义;
    3.session是针对每一个用户的,变量的值保存在服务器上,用一个session ID 来区分是哪个用户session变量,这个值是通过用户的浏览器在访问时返回给服务器的。当用户禁用cookie时,这个值也可以设置为由get来返回给服务器。
    4.对于安全性。在服务器的session机制更安全些,因为它不会任意读取客户存储的信息。

HTTPS 是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。
在这里插入图片描述

参考文档:
1、菜鸟教程HTTP教程
2、http协议各版本的区别
3、Http协议与TCP协议简单理解
4、以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
5、http协议,tcp协议,ip协议,dns服务之前的关系和区别

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐