Java开发核⼼知识笔记共2100页,完整PDF
什么是 Spring Boot
Java (⾯向对象编程语⾔)经过30多年的发展,产⽣了⾮常多的优秀框架。Spring (为解决企业应⽤程序开发的复杂性⽽创建的框架)曾是最受欢迎的Java框架之⼀, 但随着Node、Ruby、Groovy、PHP等脚本语⾔的蓬勃发展,使⽤Spring开发应⽤就显得繁琐了,因为它使⽤了⼤量的XML配置⽂件,配置繁琐,整合不易,开发和部署效率低下。这时急切需要⼀-种新的能解决这些问题的快速开发框架,于是Pivotal Software公司在2013开始了Spring Boot的研发。
过去经常会有这样的⼀种场景: -⼀个初学者花了半个⽉时间,看了⼏本Spring编程书,掌握了最基本的理论知识,但在实际着⼿开发时,往往被拦截在初始环境配置上,可能花上⼏天时间也配置不好环境。
曾经就遇到⼀个这样的开发⼈员,他竟然花费了⼀个⽉时间也没配置好初始环境。这是难以想象的,⾯对这种繁琐、效率低下的配置和开发⼯作,甚⾄会让⼈怀疑⾃⼰的能⼒。这最终让⼈⾮常痛苦,不少⼈会痛苦地放弃,⽽能坚持下来的开发⼈员在开发新项⽬时依然会⾯临⼤量繁琐的配置⼯作。⽽使⽤Spring Boot的体验则完全不⼀样,基本是“开箱即⽤"。
计算机⽹络体系结构
在计算机⽹络的基本概念中,分层次的体系结构是最基本的。计算机⽹络体系结构的抽象概念较多,在学习时要多思考。这些概念对后⾯的学习很有帮助。
⽹络协议是什么?
在计算机⽹络要做到有条不紊地交换数据,就必须遵守⼀些事先约定好的规则,⽐如交换数据的格式、是否需要发送⼀个应答信息。这些规则被称为⽹络协议。
为什么要对⽹络协议分层?
简化问题难度和复杂度。由于各层之间独⽴,我们可以分割⼤问题为⼩问题。
灵活性好。当其中⼀层的技术变化时,只要层间接⼝关系保持不变,其他层不受影响。
易于实现和维护。
促进标准化⼯作。分开后,每层功能可以相对简单地被描述。
⽹络协议分层的缺点: 功能可能出现在多个层⾥,产⽣了额外开销。
为了使不同体系结构的计算机⽹络都能互联,国际标准化组织 ISO 于1977年提出了⼀个试图使各种计
算机在世界范围内互联成⽹的标准框架,即著名的开放系统互联基本参考模型 OSI/RM,简称为OSI。
OSI 第七层协议体系结构的概念清楚,理论也较完整,但它既复杂⼜不实⽤,TCP/IP 体系结构则不同,但它现在却得到了⾮常⼴泛的应⽤。TCP/IP 是⼀个四层体系结构,它包含应⽤层,运输层,⽹际层和⽹络接⼝层(⽤⽹际层这个名字是强调这⼀层是为了解决不同⽹络的互连问题),不过从实质上讲,TCP/IP 只有最上⾯的三层,因为最下⾯的⽹络接⼝层并没有什么具体内容,因此在学习计算机⽹络的原理时往往采⽤这种的办法,即综合 OSI 和 TCP/IP 的优点,采⽤⼀种只有五层协议的体系结构,这样既简洁⼜能将概念阐述清楚,有时为了⽅便,也可把最底下两层称为⽹络接⼝层。
四层协议,五层协议和七层协议的关系如下:
java编程开发高清pdfTCP/IP是⼀个四层的体系结构,主要包括:应⽤层、运输层、⽹际层和⽹络接⼝层。
五层协议的体系结构主要包括:应⽤层、运输层、⽹络层,数据链路层和物理层。
OSI七层协议模型主要包括是:应⽤层(Application)、表⽰层(Presentation)、会话层(Session)、运输层(Transport)、⽹络层(Network)、数据链路层(Data Link)、物理层(Physical)。
注:五层协议的体系结构只是为了介绍⽹络原理⽽设计的,实际应⽤还是 TCP/IP 四层体系结构。
TCP/IP 协议族
应⽤层
应⽤层( application-layer )的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。应⽤层协议定义的是应⽤进程(进程:主机中正在运⾏的程序)间的通信和交互的规则。
对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统 DNS,⽀持万维⽹应⽤的 HTTP 协议,⽀持电⼦邮件的 SMTP 协议等等。
运输层
运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通⽤的数据传输服务。应⽤进程利⽤该服务传送应⽤层报⽂。
运输层主要使⽤以下两种协议
1. 传输控制协议-TCP:提供⾯向连接的,可靠的数据传输服务。
2. ⽤户数据协议-UDP:提供⽆连接的,尽最⼤努⼒的数据传输服务(不保证数据传输的可靠性)。
每⼀个应⽤层(TCP/IP参考模型的最⾼层)协议⼀般都会使⽤到两个传输层协议之⼀:
运⾏在TCP协议上的协议:
HTTP(Hypertext Transfer Protocol,超⽂本传输协议),主要⽤于普通浏览。
HTTPS(HTTP over SSL,安全超⽂本传输协议),HTTP协议的安全版本。
FTP(File Transfer Protocol,⽂件传输协议),⽤于⽂件传输。
POP3(Post Office Protocol, version 3,邮局协议),收邮件⽤。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),⽤来发送电⼦邮件。
TELNET(Teletype over the Network,⽹络电传),通过⼀个终端(terminal)登陆到⽹络。
SSH(Secure Shell,⽤于替代安全性差的TELNET),⽤于加密安全登陆⽤。
运⾏在UDP协议上的协议:
BOOTP(Boot Protocol,启动协议),应⽤于⽆盘设备。
NTP(Network Time Protocol,⽹络时间协议),⽤于⽹络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
运⾏在TCP和UDP协议上:
DNS(Domain Name Service,域名服务),⽤于完成地址查,邮件转发等⼯作。
⽹络层
⽹络层的任务就是选择合适的⽹间路由和交换结点,确保计算机通信的数据及时传送。在发送数据时,⽹络层把运输层产⽣的报⽂段或⽤户数据报封装成分组和包进⾏传送。在 TCP/IP 体系结构中,由于⽹络层使⽤ IP 协议,因此分组也叫 IP 数据报 ,简称数据报。
互联⽹是由⼤量的异构(heterogeneous)⽹络通过路由器(router)相互连接起来的。互联⽹使⽤的⽹络层协议是⽆连接的⽹际协议(Intert Prococol)和许多路由选择协议,因此互联⽹的⽹络层也叫做⽹际层或 IP 层。
数据链路层
数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在⼀段⼀段的链路上传送的,这就需要使⽤专门的链路层的协议。
在两个相邻节点之间传送数据时,数据链路层将⽹络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每⼀帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
在接收数据时,控制信息使接收端能够知道⼀个帧从哪个⽐特开始和到哪个⽐特结束。
⼀般的web应⽤的通信传输流是这样的:
发送端在层与层之间传输数据时,每经过⼀层时会被打上⼀个该层所属的⾸部信息。反之,接收端在层与层之间传输数据时,每经过⼀层时会把对应的⾸部信息去除。
物理层
在物理层上所传送的数据单位是⽐特。 物理层(physical layer)的作⽤是实现相邻计算机节点之间⽐特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上⾯的数据链路层不必考虑⽹络的具体传输介质是什么。“透明传送⽐特流”表⽰经实际电路传送后的⽐特流没有发⽣变化,对传送的⽐特流来说,这个电路好像是看不见的。
TCP/IP 协议族
在互联⽹使⽤的各种协议中最重要和最著名的就是 TCP/IP 两个协议。现在⼈们经常提到的 TCP/IP 并不⼀定是单指 TCP 和 IP 这两个具体的协议,⽽往往是表⽰互联⽹所使⽤的整个 TCP/IP 协议族。
互联⽹协议套件(英语:Internet Protocol Suite,缩写IPS)是⼀个⽹络通讯模型,以及⼀整个⽹络传输协议家族,为⽹际⽹络的基础通讯架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suit
e,或TCP/IP Protocols),简称TCP/IP。因为该协定家族的两个核⼼协定:TCP(传输控制协议)和IP(⽹际协议),为该家族中最早通过的标准。
划重点:
TCP(传输控制协议)和IP(⽹际协议) 是最先定义的两个核⼼协议,所以才统称为TCP/IP协议族
TCP的三次握⼿四次挥⼿
TCP是⼀种⾯向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双⽅必须在彼此间建⽴⼀条连接。所谓的“连接”,其实是客户端和服务端保存的⼀份关于对⽅的信息,如ip地址、端⼝号等。
TCP可以看成是⼀种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建⽴过程中,双⽅需要交换⼀些连接的参数。这些参数可以放在TCP头部。
⼀个TCP连接由⼀个4元组构成,分别是两个IP地址和两个端⼝号。⼀个TCP连接通常分为三个阶段:连接、数据传输、退出(关闭)。通过三次握⼿建⽴⼀个链接,通过四次挥⼿来关闭⼀个连接。
当⼀个连接被建⽴或被终⽌时,交换的报⽂段只包含TCP头部,⽽没有数据。
TCP报⽂的头部结构
在了解TCP连接之前先来了解⼀下TCP报⽂的头部结构。
上图中有⼏个字段需要重点介绍下:
(1)序号:seq序号,占32位,⽤来标识从TCP源端向⽬的端发送的字节流,发起⽅发送数据时对此进⾏标记。
(2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
ACK:确认序号有效。
FIN:释放⼀个连接。
PSH:接收⽅应该尽快将这个报⽂交给应⽤层。
RST:重置连接。
SYN:发起⼀个新连接。
URG:紧急指针(urgent pointer)有效。
需要注意的是:
不要将确认序号ack与标志位中的ACK搞混了。
确认⽅ack=发起⽅seq+1,两端配对。
三次握⼿
三次握⼿的本质是确认通信双⽅收发数据的能⼒
⾸先,我让信使运输⼀份信件给对⽅,对⽅收到了,那么他就知道了我的发件能⼒和他的收件能⼒是可以的。
于是他给我回信,我若收到了,我便知我的发件能⼒和他的收件能⼒是可以的,并且他的发件能⼒和我的收件能⼒是可以。
然⽽此时他还不知道他的发件能⼒和我的收件能⼒到底可不可以,于是我最后回馈⼀次**,他若收到了,他便清楚了他的发件能⼒和我的收件能⼒是可以的。**
这,就是三次握⼿,这样说,你理解了吗?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论