Java——TCP/IP超详细总结

网络的基础知识

1、协议

一、简介:

在计算机网络与信息通讯领域里,人们常常说起“协议”一词。互联网中经常使用的具备表明性的协议有IP、TCP、HTTP等。而LAN(局域网)中经常使用的协议有IPX/SPX”等。前端

下面经过通俗一点的方式来解释一下协议:数据库

有三我的A、B、C。A只会说汉语、B只会说英语、而C既会说汉语又会说英语。如今A与B要聊天,他们之间该如何沟通呢?若A与C要聊天,又会怎样?这时若是咱们:编程

  • 将汉语和英语看成“协议”
  • 将聊天看成“通讯”
  • 将说话的内容看成“数据”

那么A和B之间因为采用的是不一样的语言,那么可能永远都不能进行正常交流。由于他们之间所采用的协议不一样,若是想要正常交流,那么必须采用相同的协议,要么都用汉语,要么都使用英语,这样就能够正常交流了。浏览器

那么计算机之间进行通讯时也是如此,若是两个计算机之间所采用的协议不一样,则两个计算将不能进行通讯缓存

 

二、协议分层

ISO在制定标准化OSI以前,对网络体系结构相关的问题进行了充分的讨论,最终提出了做为通讯协议设计指标的OSI参考模型。这一模型将通讯协议中必要的功能分红了7层。经过这些分层,使得那些比较复杂的网络协议更加简单化。tomcat

在这一模型中,每一个分层都接收由它下一层所提供的特定服务,而且负责为本身的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫作“接口”。同一层之间的交互所遵循的约定叫作“协议”。安全

 

 

这样解释可能有点抽象,咱们用一个比较形象的场景来解释一下:打电话服务器

在这个图中,他们所用的语言协议做为麦克风的音频输入,在通讯设备层被转换为电波信号传送出去了。传送到对方的电话机后,又被通讯设备层转换为音频输出,传递给了对方。所以,A与C实际上是利用电话机之间经过音频转化声音的接口实现了对话。网络

 

三、OSI参考模型:

前面只是将协议简单地分为了两层进行了举例说明。然而,实际的分组通讯协议会至关复杂。0SI参考模型将这样一个复杂的协议整理并分为了易于理解的7个分层。socket

 

 

OSI参考模型中各个分层的做用:

 

OSI参考模型举例:

假定如今有两个用户,用户A和用户B,用户A发一封内容为“早上好”的邮件给用户B,那么在网络中这封邮件究竟作了哪些处理呢?

一、应用层:

应用层协议会在所要传送数据(早上好)的前端附加一个首部(标签)信息。该首部标明了邮件内容为“早上好”和收件人为“B”。这一附有首部信息的数据传送给主机B之后由该主机上的收发邮件软件经过“收信”功能获取内容。主机B上的应用收到由主机A发送过来的数据后,分析其数据首部与数据正文,并将邮件保存到硬盘或是其余非易失性存储器”以备进行相应的处理。若是主机B上收件人的邮箱空间已满没法接收新的邮件,则会返回一个错误给发送方。对这类异常的处理也正属于应用层须要解决的问题。

 

二、表现层:

表示层的“表示”有“表现”、“演示”的意思,所以更关注数据的具体表现形式”。此外,所使用的应用软件自己的不一样也会致使数据的表现形式大相径庭。例若有的字处理软件建立的文件只能由该字处理器厂商所提供的特定版本的软件才来打开读取。

此例中的“早上好”这段文字根据其编码格式被转换成为了“统一的网络数据格式”。即使是一段简单的文字流,也能够有众多复杂的编码格式。就拿日语文字来讲,有EUC-JP、Shift_JIS、ISO-2022-JP、UTF-8以及UTF-16等不少编码格式0。若是未能按照特定格式编码,那么在接收端就是收到邮件也可能会是乱码”。
表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层去处理。

 

 

三、会话层:

假定用户A新建了5封电子邮件准备发给用户B。这5封邮件的发送顺序能够有不少种。例如,能够每发一封邮件时创建一次链接”,随后断开链接。还能够一经创建好链接后就将5封邮件连续发送给对方。甚至能够同时创建好5个链接,将5封邮件同时发送给对方。决定采用何种链接方法是会话层的主要责任。
会话层也像应用层或表示层那样,在其收到的数据前端附加首部或标签信息后再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息。

 

 

到此为止,咱们经过例子说明了在应用层写人的数据会经由表示层格式化编码、再由会话层标记发送顺序后才被发送出去的大体过程。然而,会话层只对什么时候创建链接、什么时候发送数据等问题进行管理,并不具备实际传输数据的功能。真正负责在网络上传输具体数据的是会话层如下的“无名英雄”。

 

四、传输层:

主机A确保与主机B之间的通讯并准备发送数据。这一过程叫作“创建链接”。有了这个通讯链接就可使主机A发送的电子邮件到达主机B中,并由主机B的邮件处理程序获取最终数据。此外,当通讯传输结束后,有必要将链接断开。
如上,进行创建链接或断开链接的处理”,在两个主机之间建立逻辑上的通讯链接便是传输层的主要做用。此外,传输层为确保所传输的数据到达目标地址,会在通讯两端的计算机之间进行确认,若是数据没有到达,它会负责进行重发。

注意:会话层负责决定创建链接和断开链接的时机,而传输层进行实际的创建和断开处理。 

eg:主机A将“早上好”这一数据发送给主机B。期间可能会由于某些缘由致使数据被破坏,或因为发生某种网络异常导致只有一部分数据到达目标地址。假设主机B只收到了“早上”这一部分数据,那么它会在收到数据后将本身没有收到“早上”以后那部分数据的事实告知主机A。主机A得知这个状况后就会将后面的“好”重发给主机B,并再次确认对端是否收到。

因而可知,保证数据传输的可靠性是传输层的一个重要做用。为了确保可靠性,在这一层也会为所要传输的数据附加首部以识别这一分层的数据。然而,实际上将数据传输给对端的处理是由网络层来完成的。

 

 

五、网络层:

网络层的做用是在网络与网络相互链接的环境中,将数据从发送端主机发送到接收端主机。

 

 

 

六、数据链路层和物理层:

通讯传输其实是经过物理的传输介质实现的。数据链路层的做用就是在这些经过传输介质互连的设备之间进行数据处理。

物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为MAC”地址,也可称为物理地址或硬件地址。采用MAC地址,目的是为了识别链接到同一个传输介质上的设备。所以,在这一分层中将包含MAC地址信息的首部附加到从网路层转发过来的数据上,将其发送到网络。

网络层与数据链路层都是基于目标地址将数据发送给接收端的,可是网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据。 

 

2、传输方式的分类

一、面向有链接和面向无链接:

面向有链接:在发送数据以前须要先获得对象的确认才能够发送,TCP就是面向有链接

面向无链接:发送数据的时候不须要获得对方的赞成,直接发送,UDP就是面向无链接

 

二、电路交换和分组交换:

电路交换:交换机主要负责数据的中转处理。计算机首先被链接到交换机上,而交换机与交换机之间则由众多通讯线路再继续链接。所以计算机之间在发送数据时,须要经过交换机与目标主机创建通讯电路。咱们将链接电路称为创建链接。创建好链接之后,用户就能够一直使用这条电路,直到该链接被断开为止。

分组交换:在分组交换中,由分组交换机(路由器)链接通讯线路。分组交换的大体处理过程是:发送端计算机将数据分组发送给路由器,路由器收到这些分组数据之后,缓存到本身的缓冲区,而后再转发给目标计算机。所以,分组交换也有另外一个名称:蓄积交换

 

 

三、单播、多播、广播和任播:

 

 

3、地址

一、地址惟一性:

在网络通讯中,通讯两端都必须有通讯地址,并且地址必须是惟一的,不然将致使没法通讯。好比一个班级若是有两个同名的同窗都叫刘华,那么当老师叫刘华时就不知道叫的是哪一个。

 

二、地址的层次性:

互联网中有成千上万个网络设备,每一个设备都有对应的IP地址,那么在网络通讯时若是这些IP地址没有规律的话将致使IP查询很是麻烦,这点能够类比咱们经常使用的电话号码,使用电话和信件通讯的过程中,早已有了地址分层这种概念。例如,电话号码包含国家区号和国内区号,通讯地址包含国名、省名、市名和区名等。正是有了这种层次分类才能更加快速地定位某一个地址。

MAC地址和IP地址在标识一个通讯主体时虽然都具备惟一性,可是它们当中只有IP地址具备层次性。

首先,IP由网络号和主机号构成,IP地址中若是主机号不一样,网络号相同,说明它们处于同一个网段。一般,同处一个网段的主机也都属于同一个部门或集团组织。

 

4、网络构成要素

在网络通讯中,不只仅只有主机的参与,还须要多种网络设备参与进来,才能构成一个完整的网络

 

上图是一套网络环境中所涉及的各类网络设备,下面简单介绍一下这些设备的做用

一、网卡:

任何一台计算机链接网络时,必需要使用网卡(全称为网络接口卡)。网络接口卡(NIC”)有时也被叫作网络适配器、网卡、LAN卡。

 

 

 

二、中继器:

中继器(Repeater)是在OSI模型的第1层——物理层面上延长网络的设备。由电缆传过来的电信号或光信号经由中继器的波形调整和放大再传给另外一个电缆。

 

 

三、网桥/2层交换机:

网桥是在OSI模型的第2层——数据链路层面上链接两个网络的设备。它可以识别数据链路层中的数据帧(与分组意思大体相同)并将这些数据锁临时存储于内存,再从新生成信号做为一个全新的帧转发给相连的另外一个网段(具备分割、划分网段的意思)因为可以存储这些数据帧,网桥可以链接10BASE-T与100BASE-TX等传输速率彻底不一样的数据链路,而且不限制链接网段的个数。

 

 

四、路由器/3层交换机:

路由器是在0SI模型的第3层——网络层面上链接两个网络、并对分组报文进行转发的设备。网桥是根据物理地址(MAC地址)进行处理,而路由器/3层交换机则是根据IP地址进行处理的。由此,TCP/IP中网络层的地址就成为了IP地址。

 

 

五、网关:

网关是OSI参考模型中负责将从传输层到应用层的数据进行转换和转发的设备”。它与4~7层交换机同样都是处理传输层及以上的数据,可是网关不只转发数据还负责对数据进行转换,它一般会使用一个表示层或应用层网关,在两个不能进行直接通讯的协议之间进行翻译,最终实现二者之间的通讯。

 

 

TCP/IP基础知识

一、TCP/IP是什么:

从字面意义上讲,有人可能会认为TCP/IP是指TCP与IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在不少状况下,它只是利用IP进行通讯时所必须用到的协议群的统称。具体来讲,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP的协议。它们与TCP或IP的关系紧密,是互联网必不可少的组成部分。TCP/IP一词泛指这些协议,所以,有时也称TCP/IP为网际协议族

 

 

二、互联网是什么:

咱们口中常常谈到的互联网时代,那么互联网究竟是什么?

“互联网”,英文单词为“Internet”。从字面上理解,internet指的是将多个网络链接使其构成一个更大的网络,因此internet一词本意为网际网。将两个以太网网段用路由器相连是互联网,将企业内部各部门的网络或公司的内网与其余企业相链接,并实现相互通讯的网络也是互联网,甚至一个区域的网络与另外一个区域的网络相互链接造成全世界规模的网络也能够称做互联网。然而,如今“互联网”这个词的意思却有所变化。当专门指代网络之间的链接时,可使用“网际网”这个词。

 

三、互联网和TCP/IP关系:

互联网进行通讯时,须要相应的网络协议,TCP/IP本来就是为使用互联网而开发制定的协议族。所以,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。

 

四、互联网结构图:

互联网中的每一个网络都是由骨干网(BackBone)和末端网(Stub)组成的。每一个网络之间经过NOC”相连。若是网络的运营商不一样,它的网络链接方式和使用方法也会不一样。链接这种异构网络须要有IX”的支持。总之,互联网就是众多异构的网络经过IX互连的一个巨型网络。

 

五、TCP/IP协议分层模型:

TCP/IP是当今计算机网络使用最为普遍的协议,在前面咱们介绍了OSI参考模型,那么TCP/IP对应着也有相应的分层模型

 

下面来分别介绍一下每一层的功能:

(1)、硬件(物理层):

TCP/IP的最底层是负责数据传输的硬件。这种硬件就至关于以太网或电话线路等物理层的设备。关于它的内容一直没法统必定义。由于只要人们在物理层面上所使用的传输媒介不一样(如使用网线或无线),网络的带宽、可靠性、安全性、延迟等都会有所不一样,而在这些方面又没有一个既定的指标。

(2)、网络接口层(数据链路层):

网络接口层利用以太网中的数据链路层进行通讯,所以属于接口层。也就是说,把它当作让NIC起做用的“驱动程序”也无妨。驱动程序是在操做系统与硬件之间起桥梁做用的软件。计算机的外围附加设备或扩展卡,不是直接插到电脑上或电脑的扩展槽上就能立刻使用的,还须要有相应驱动程序的支持。例如换了一个新的NIC网卡,不只须要硬件,还须要软件才能真正投入使用。所以,人们经常还须要在操做系统的基础上安装一些驱动软件以便使用这些附加硬件。

(3)互联网层(网络层):

互联网层使用IP协议,它至关于OSI模型中的第3层网络层。

IP协议:

  • IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使数据可以发送到地球的另外一端,这期间它使用IP地址做为主机的标识”。
  • IP还隐含着数据链路层的功能。经过IP,相互通讯的主机之间不论通过怎样的底层数据链路都可以实现通讯。
  • 虽然IP也是分组交换的一种协议,可是它不具备重发机制。即便分组数据包未能到达对端主机也不会重发。所以,属于非可靠性传输协议。

ICMP协议:

IP数据包在发送过程当中若是发生异常,接收端须要给发送端发送一个异常通知,ICMP协议就是起到这个做用

ARP协议:

由IP地址解析出MAC地址的一种协议

这三种协议具体后面后面会详解介绍

(4)、传输层:

TCP/IP的传输层有两个具备表明性的协议。该层的功能自己与OSI参考模型中的传输层相似。

传输层最主要的功能就是可以让应用程序之间实现通讯。计算机内部,一般同一时间运行着多个程序。为此,必须分清是哪些程序与哪些程序在进行通讯。识别这些应用程序的是端口号。

传输层的两个协议:

TCP:

TCP是一种面向有链接的传输层协议。它能够保证两端通讯主机之间的通讯可达。TCP可以正确处理在传输过程当中丢包、传输顺序乱掉等异常状况。此外,TCP还可以有效利用带宽,缓解网络拥堵。

然而,为了创建与断开链接,有时它须要至少7次的发包收包,致使网络流量的浪费。此外,为了提升网络的利用率,TCP协议中定义了各类各样复杂的规范,所以不利于视频会议(音频、视频的数据量既定)等场合使用。

 

UDP:

UDP有别于TCP,它是一种面向无链接的传输层协议。UDP不会关注对端是否真的收到了传送过去的数据,若是须要检查对端是否收到分组数据包,或者对端是否链接到网络,则须要在应用程序中实现。

UDP经常使用于分组数据较少或多播、广播通讯以及视频通讯等多媒体领域。

(5)、应用层(会话层以上的分层):

TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。这些功能有时由一个单一的程序实现,有时也可能会由多个程序实现。所以,细看TCP/IP的应用程序功能会发现,它不只实现OSI模型中应用层的内容,还要实现会话层与表示层的功能。

 

六、TCP/IP分层模型示例

假设甲给乙发生电子邮件,邮件内容为“早上好”,下面来看一下TCP/IP是如何处理的:

①:应用程序处理:

当发送人编写好邮件点击发送时,TCP/IP通讯便开始了,应用程序首先作的就是进行编码处理

②:TCP模块的处理:

TCP根据应用的指示”,负责创建链接、发送数据以及断开链接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。

为了实现TCP的这一功能,须要在应用层数据的前端附加一个TCP首部。TCP首部中包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(用以发送的包中哪部分是数据)以及校验和”(用以判断数据是否被损坏)。随后将附加了TCP首部的包再发送给IP。

③:IP模块的处理:

IP将TCP传过来的TCP首部和TCP数据合起来当作本身的数据,并在TCP首部的前端在加上本身的IP首部。所以,IP数据包中IP首部后面紧跟着TCP首部,而后才是应用的数据首部和数据自己。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP仍是UDP的信息。

④:网络接口(以太网驱动)的处理:

从IP传过来的IP包,对于以太网驱动来讲不过就是数据。给这数据附加上以太网首部并进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。根据上述信息产生的以太网数据包将经过物理层传输给接收端。发送处理中的FCS”由硬件计算,添加到包的最后。

 

数据链路层

1、数据链路层概述:

数据链路层的协议定义了经过通讯媒介互连的设备之间传输的规范。通讯媒介包括双绞线电缆、同轴电缆、光纤、电波以及红外线等介质。此外,各个设备之间有时也会经过交换机、网桥、中继器等中转数据。

 

2、数据链路层相关技术:

一、MAC地址:

MAC地址用于识别数据链路中互连的节点,MAC地址是惟一的,不可重复,MAC地址格式以下:

 

二、共享介质型网络:

从通讯介质(通讯,介质)的使用方法上看,网络可分为共享介质型和非共享介质型。

共享介质型网络指由多个设备共享一个通讯介质的一种网络。最先的以太网和FDDI就是介质共享型网络。在这种方式下,设备之间使用同一个载波信道进行发送和接收。为此,基本上采用半双工通讯方式,并有必要对介质进行访问控制。

共享介质型网络中有两种介质访问控制方式:一种是争用方式,另外一种是令牌传递方式。

争用方式:

争用方式是指争夺获取数据传输的权力,也叫CSMA(载波监听多路访问)。这种方法一般令网络中的各个站采用先到先得的方式占用信道发送数据,若是多个站同时发送帧,则会产生冲突现象。也所以会致使网络拥堵与性能降低。

 

 

 

令牌传递方式:

令牌传递方式是沿着令牌环发送一种叫作“令牌”的特殊报文,是控制传输的一种方式。只有得到令牌的站才能发送数据。这种方式有两个特色:一是不会有冲突,二是每一个站都有经过平等循环得到令牌的机会。所以,即便网络拥堵也不会致使性能降低。

固然,这种方式中,一个站在没有收到令牌前不能发送数据帧,所以在网络不太拥堵的状况下数据链路的利用率也就达不到100%。为此,衍生了多种令牌传递的技术。例如,早期令牌释放、令牌追加”等方式以及多个令牌同时循环等方式。这些方式的目的都是为了尽量地提升网络性能。

 

三、非共享介质网络:

非共享介质网络是指不共享介质,是对介质采起专用的一种传输控制方式。

在这种方式下,网络中的每一个站直连交换机,由交换机负责转发数据帧。此方式下,发送端与接收端并不共享通讯介质,所以不少状况下采用全双工通讯方式。

 

上面提到了全双工和半双工通讯,这里来解释一下这两个概念:

全双工:

全双工是指容许在同一时间内通讯双方均可以进行通讯,相似于电话,电话双方均可以同时说话。

半双工:

半双工是指只能发送或者接收的通讯方式,它相似于无线电收发器。

 

四、VLAN:

进行网络管理的时候,时常会遇到分散网络负载、变换部署网络设备的位置等状况。而有时管理员在作这些操做时,不得不修改网络的拓扑结构,这也就意味着必须进行硬件线路的改造。然而,若是采用带有VLAN技术的网桥,就不用实际修改网络布线,只需修改网络的结构便可。VLAN技术附加到网桥/2层交换机上,就能够切断全部VLAN之间的全部通讯。所以,相比通常的网桥/2层交换机,VLAN能够过滤多余的包,提升网络的承载效率。

 

3、无线技术:

一、无线通讯概览:

无线通讯一般使用电磁波、红外线、激光等方式进行传播数据。通常在办公室的局域网范围内组成的较高速的链接称为无线局域网。
无线通讯不须要网线或其余可见电缆。所以,早期无线通讯主要用于轻量级的移动设备。然而随着无线通讯速度的不断提高,以及无线通讯自己可以下降配线成本的优点,它很快在办公室、家庭、店铺以及车站和机场等环境中被普遍使用。

二、无线通讯种类:

无线通讯,依据通讯距离可分为如表3.3所列出的类型。IEEE802委员会制定了无线PAN”(802.15)、无线LAN”(802.11)、无线MAN”(802.16)以及无线RAN”(802.22)等无线标准。无线WAN”的最典型表明就是手机通讯。手机经过基站可以实现长距离通讯。

 

4、PPP

PPP是指点对点,即1对1链接计算机的协议。PPP至关于位于OSI参考模型第2层的数据链路层。

PPP不像以太网和FDDI。后二者不只与0SI参考模型的数据链路层有关,还与第1层的物理层有关。具体来说,以太网使用同轴电缆或双绞线电缆,它能够决定其中的0、1该被解释为什么种电子信号。与之相比,PPP属于纯粹的数据链路层,与物理层没有任何关系。换句话说,仅有PPP没法实现通讯,还须要有物理层的支持。

 

IP协议

1、IP协议基础知识:

一、IP地址属于网络层地址

在前面咱们提到了MAC地址,MAC地址属于数据链路层,IP地址属于网络层地址,在计算机通讯中,为了识别通讯对端,必需要有一个相似于地址的识别码进行标识,所以在TCP/IP通讯中全部主机或路由器必须设定本身的IP地址。

二、路由控制:

路由控制是指将分组数据发送到最终目标地址的功能。即便网络很是复杂,也能够经过路由控制肯定到达目标地址的通路。一旦这个路由控制的运行出现异常,分组数据极有可能“迷失”,没法到达目标地址。所以,一个数据包之因此可以成功地到达最终的目标地址,全靠路由控制。  

 

三、IP地址

(1)、IP地址定义:

IP地址(IPv4地址)由32位正整数来表示。TCP/IP通讯要求将这样的IP地址分配给每个参与通讯的主机。IP地址在计算机内部以二进制方式被处理。然而,因为人类社会并不习惯于采用二进制方式,须要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组,分红4组,每组以“.”隔开,再将每组数转换为十进制数。

IP地址由网络和主机两部分组成,网络标识在数据链路的每一个段配置不一样的值。网络标识必须保证相互链接的每一个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP地址的主机标识则不容许在同一个网段内重复出现。

(2)、IP地址的分类:
IP地址分为四个级别,分别为A类、B类、C类、D类”。它根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。

A类地址:

A类IP地址是首位以“0”开头的地址。从第1位到第8位”是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0是A类的网络地址。A类地址的后24位至关于主机标识。所以,一个网段内可容纳的主机地址上限为16,777,214个”。

B类地址:

B类IP地址是前两位为“10”的地址。从第1位到第16位是它的网络标识。用十进制表示的话,128.0.0.1~191.255.0.0是B类的网络地址。B类地址的后16位至关于主机标识。所以,一个网段内可容纳的主机地址上限为65,534个。

C类地址:

C类IP地址是前三位为“110”的地址。从第1位到第24位”是它的网络标识。用十进制表示的话,192.168.0.0~239.255.255.0是C类的网络地址。C类地址的后8位至关于主机标识。所以,一个网段内可容纳的主机地址上限为254个。

D类地址:

D类IP地址是前四位为“1110”的地址。从第1位到第32位”是它的网络标识。用十进制表示的话,224.0.0.0~239.255.255.255是D类的网络地址。D类地址没有主机标识,常被用于多播。

 

(3)、子网掩码:

子网掩码 (subnet mask) 又叫网络掩码、地址掩码、子网络遮罩,是一个应用于 TCP/IP 网络的 32 位二进制值。它能够屏蔽掉 IP 地址中的一部分,从而分离出 IP 地址中的网络部分与主机部分,基于子网掩码,管理员能够将网络进一步划分为若干子网。它必须结合 IP 地址一块儿使用。

虽然咱们说子网掩码能够分离出 IP 地址中的网络部分与主机部分,可你们仍是会有疑问,好比为何要区分网络地址与主机地址?区分之后又怎样呢?那么好,让咱们再详细的讲一下吧!  

在使用 TCP/IP 协议的两台计算机之间进行通讯时,咱们经过将本机的子网掩码与接受方主机的 IP 地址进行 ' 与 ' 运算,便可获得目标主机所在的网络号,又因为每台主机在配置 TCP/IP 协议时都设置了一个本机 IP 地址与子网掩码,因此能够知道本机所在的网络号。

经过比较这两个网络号,就能够知道接受方主机是否在本网络上。若是网络号相同,代表接受方在本网络上,那么能够经过相关的协议把数据包直接发送到目标主机;若是网络号不一样,代表目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其余网络,直至到达目的地。在这个过程当中你能够看到,子网掩码是不可或缺的!

(4)、IPV4首部:

 

IP协议相关技术

1、DNS

一、IP地址不便于记忆:

不知道你们有没有注意到咱们日常在访问WEB资源时,在地址栏输入的其实不是IP地址,由于IP地址不方便记忆,而是这个IP地址对应的域名,那么浏览器是如何根据这个域名找到对应的服务器呢?这就是DNS的做用。

 

二、DNS查询:

DNS是如何根据域名找到对应的IP地址的呢?看下图:

 

 

解析器为了调查IP地址,向域名服务器进行查询处理。接收这个查询请求的域名服务器首先会在本身的数据库进行查找。若是有该域名所对应的IP地址就返回。若是没有,则域名服务器再向上一层根域名服务器进行查询处理。所以,如图所示,从根开始对这棵树按照顺序进行遍历,直到找到指定的域名服务器,并由这个域名服务器返回想要的数据。

 

2、ARP

一、ARP概要:

只要肯定了IP地址,就能够向这个目标地址发生IP数据,然而在底层数据链路层,进行实际通讯是须要每一个IP地址对应的MAC地址的

ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。若是目标主机不在同一个链路上时,能够经过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用于IPv6。IPv6中能够用ICMPv6替代ARP发送邻居探索消息。

 

二、ARP工做机制:

ARP是借助ARP请求与ARP响应两种类型的包肯定MAC地址的

 

主机A为了得到主机B的MAC地址,起初要经过广播发送一个ARP请求包。这个包中包含了想要了解其MAC地址的主机IP地址。也就是说,ARP请求包中已经包含了主机B的IP地址172.20.1.2。因为广播的包能够被同一个链路上全部的主机或路由器接收,所以ARP的请求包也就会被这同一个链路上全部的主机和路由器进行解析。若是ARP请求包中的目标IP地址与本身的IP地址一致,那么这个节点就将本身的MAC地址塞入ARP响应包返回给主机A。

 

3、RARP

RARP是将ARP反过来,从MAC地址定位IP地址的一种协议。例如将打印机服务器等小型嵌入式设备接入到网络时就常常会用获得。

日常咱们能够经过我的电脑设置IP地址,也能够经过DHCP(后面内容会提到)自动分配获取IP地址。然而,对于使用嵌入式设备时,会遇到没有任何输入接口或没法经过DHCP动态获取IP地址的状况。

 

 

4、ICMP

咱们日常在部署网络的时候,当咱们部署完毕以后,须要验证一下该网络的配置是否正确,这时候就须要用到ICMP。

ICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体缘由,改善网络设置等。有了这些功能之后,就能够得到网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断。

 

 

5、DHCP

若是逐一为每一台主机设置IP地址会很是繁琐的事情。特别是在移动使用笔记本电脑、智能终端以及平板电脑等设备时,每移动到一个新的地方,都要从新设置IP地址。因而,为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP

协议。有了DHCP,计算机只要链接到网络,就能够进行TCP/IP通讯。也就是说,DHCP让即插即用”变得可能。而DHCP不只在IPv4中,在IPv6中也可使用。

 

 

6、NAT

NAT(Network Address Translator)是用于在本地网络中使用私有地址,在链接互联网时转而使用全局IP地址的技术。除转换IP地址外,还出现了能够转换TCP、UDP端口号的NAPT(Network Address Ports Translator)技术,由此能够实现用一个全局IP地址与多个主机的通讯。

 

7、IP隧道

以下图所示,当在两个IPV6之间进行通讯时,若是IPV6之间夹杂着IPV4的话,这时候若是还想要进行通讯,则必须使用IP隧道技术

 

 

 

TCP和UDP

1、传输层概述

TCP/IP中有两个具备表明性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通讯传输,而UDP则常被用于让广播和细节控制交给应用的通讯传输。总之,根据通讯的具体特征,选择合适的传输层协议是很是重要的。

 

2、端口号

数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不一样的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种相似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通讯的不一样应用程序。所以,它也被称为程序地址。可是一般咱们输入IP地址发现并无输入端口号也能够访问,这是由于有默认的端口号,好比tomcat的默认端口号是8080

 

3、UDP

一、UDP简介:

UDP不提供复杂的控制机制,利用IP提供面向无链接的通讯服务。而且它是将应用程序发来的数据在收到的那一刻,当即按照原样发送到网络上的一种机制。

即便是出现网络拥堵的状况下,UDP也没法进行流量控制等避免网络拥塞的行为。此外,传输途中即便出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。若是须要这些细节控制,那么不得不交由采用UDP的应用程序去处理”。UDP有点相似于用户说什么听什么的机制,可是须要用户充分考虑好上层协议类型并制做相应的应用程序。所以,也能够说,UDP按照“制做程序的那些用户的指示行事”。

因为UDP面向无链接,它能够随时发送数据。再加上UDP自己的处理既简单又高效,所以常常用于如下几个方面:

  • 包总量较少的通讯(DNS、SNMP等)
  • 视频、音频等多媒体通讯(即时通讯)
  • 限定于LAN等特定网络中的应用通讯
  • 广播通讯(广播、多播)

 

二、UDP首部格式:

 

源端口号:

表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号。没有源端口号的时候该字段的值设置为0。可用于不须要返回的通讯中

目标端口号:

表示接收端端口,字段长度16位

包长度:

该字段保存了UDP首部的长度跟数据的长度之和。单位为字节(8位字节)

校验和:

校验和是为了提供可靠的UDP首部和数据而设计

 

4、TCP

一、TCP简介:

UDP是一种没有复杂控制,提供面向无链接通讯服务的一种协议。换句话说,它将部分控制转移给应用程序去处理,本身却只提供做为传输层协议的最基本功能。
与UDP不一样,TCP则“人如其名”,能够说是对“传输、发送、通讯”进行“控制”的“协议”。

TCP与UDP的区别至关大。它充分地实现了数据传输时各类控制功能,能够进行丢包时的重发控制,还能够对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP做为一种面向有链接的协议,只有在确认通讯对端存在时才会发送数据,从而能够控制通讯流量的浪费”。

根据TCP的这些机制,在IP这种无链接的网络上也可以实现高可靠性的通讯。

 

二、TCP的特色:

TCP经过检验和、序列号、确认应答、重发控制、链接管理以及窗口控制等机制实现可靠性传输。

 

三、TCP的三次握手:

上图中有几个字段须要重点介绍下:
(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义以下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置链接。
(E)SYN:发起一个新链接。
(F)FIN:释放一个链接。
所谓三次握手(Three-way Handshake),是指创建一个TCP链接时,须要客户端和服务器总共发送3个包。
三次握手的目的是链接服务器指定端口,创建TCP链接,并同步链接双方的序列号和确认号并交换 TCP 窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手,三次握手后客户端和服务器之间创建链接
 

 

第一次握手:

客户端发送一个TCP的SYN标志位置1的包指明客户打算链接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:

服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手:

客户端再次发送确认包(ACK)SYN标志位为0,ACK标志位为1.而且把服务器发来ACK的序号字段+1,放在肯定字段中发送给对方.而且在数据段放写ISN的+1

 

四、TCP的四次挥手:

TCP的链接的拆除须要发送四个包,所以称为四次挥手。客户端或服务器都可主动发起挥手动做,在socket编程中,任何一方执行close()操做便可产生挥手操做。四次挥手后客户端和服务器端之间断开链接

  1. 先由客户端向服务器端发送一个FIN,请求关闭数据传输。
  2. 当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ
  3. 而后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。
  4. 当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ

为何创建链接须要三次,可是断开链接却须要四次呢?

  • 确保数据可以完整传输。
  • 当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。
  • 但未必被动方全部的数据都完整的发送给了主动方,因此被动方不会立刻关闭SOCKET,它可能还须要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方赞成关闭链接,因此这里的ACK报文和FIN报文多数状况下都是分开发送的。

五、超时重发:

当客户端给服务器发送请求时,若是服务端因为网络等缘由没有及时给客户端响应,那么这时客户端便会从新发送一个请求,这就是超时重发。

重发超时是指在重发数据以前,等待确认应答到来的那个特定时间间隔。若是超过了这个时间仍未收到确认应答,发送端将进行数据重发。那么这个重发超时的具体时间长度又是如何肯定的呢?

最理想的是,找到一个最小时间,它能保证“确认应答必定能在这个时间内返回”。然而这个时间长短随着数据包途径的网络环境的不一样而有所变化。例如在高速的LAN中时间相对较短,而在长距离的通讯当中应该比LAN要长一些。即便是在同一个网络中,根据不一样时段的网络拥堵程度时间的长短也会发生变化。

 

六、TCP以段为单位发送数据:

在创建TCP链接的同时,也能够肯定发送数据包的单位,咱们也能够称其为“最大消息长度”(MSS:Maximum Segment Size)。最理想的状况是,最大消息长度正好是IP中不会被分片处理的最大数据长度。

TCP在传送大量数据时,是以MSS的大小将数据进行分割发送。进行重发时也是以MSS为单位。

MSS是在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出创建链接的请求时,会在TCP首部中写入MSS选项,告诉对方本身的接口可以适应的MSS的大小。而后会在二者之间选择一个较小的值投入使用。

 

七、利用窗口控制提升速度:

TCP以1个段为单位,每发一个段进行一次确认应答的处理。这样的传输方式有一个缺点。那就是,包的往返时间越长通讯性能就越低。以下图所示:

 

为解决这个问题,TCP引入了窗口这个概念。即便在往返时间较长的状况下,它也能控制网络性能的降低。以下图所示,确认应答再也不是以每一个分段,而是以更大的单位进行确认时,转发时间将会被大幅度的缩短。也就是说,发送端主机,在发送了一个段之后没必要要一直等待确认应答,而是继续发送。

  

TCP与UDP的区别总结:

一、TCP面向链接(如打电话要先拨号创建链接);UDP是无链接的,即发送数据以前不须要创建链接

二、TCP提供可靠的服务。也就是说,经过TCP链接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付

三、TCP面向字节流,其实是TCP把数据当作一连串无结构的字节流;UDP是面向报文的。UDP没有拥塞控制,所以网络出现拥塞不会使源主机的发送速率下降(对实时应用颇有用,如IP电话,实时视频会议等)

四、每一条TCP链接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通讯

五、TCP首部开销20字节;UDP的首部开销小,只有8个字节

六、TCP的逻辑通讯信道是全双工的可靠信道,UDP则是不可靠信道