计算机网络

1、长链接与短链接

概念:程序员

(1)长链接,指在一个链接上能够连续发送多个数据包,在链接保持期间,若是没有数据包发送,须要双方发链路检测包。
(2)短链接,是指通信双方有数据交互时,就创建一个链接,数据发送完成后,则断开此链接,即每次链接只完成一项业务的发送。数据库

区别:编程

长链接多用于操做频繁,点对点的通信,并且链接数不能太多状况。每一个TCP链接都须要三步握手,这须要时间,若是每一个操做都是短链接,再操做的话那么处理速度会下降不少,因此每一个操做完后都不断开,下次处理时直接发送数据包就OK了,不用创建TCP链接。例如:数据库的链接用长链接,若是用短链接频繁的通讯会形成socket错误,并且频繁的socket建立也是对资源的浪费。而像WEB网站的http服务通常都用短连接,由于长链接对于服务端来讲会耗费必定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的链接用短链接会更省一些资源,若是用长链接,并且同时有成千上万的用户,若是每一个用户都占用一个链接的话,那可想而知吧。因此并发量大,但每一个用户无需频繁操做状况下需用短连好。总之,长链接和短链接的选择要视状况而定。windows

2、TCP三次握手

概念:安全

三次握手(three times handshake;three-wayhandshake)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而肯定的数据确认数及数据发送、接收完毕后什么时候撤消联系,并创建虚链接。
为了提供可靠的传送,TCP在发送新的数据以前,以特定的顺序将数据包的序号,并须要这些包传送给目标机以后的确认消息。TCP老是用来发送大批量的数据。当应用程序在收到数据后要作出确认时也要用到TCP。服务器

中文名网络

三次握手

外文名并发

Three-way handshake

别 称异步

TCP握手协议

应用学科socket

计算机传输协议

适用领域范围

计算机

过程

第一次握手:创建链接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize
Sequence Numbers)。 第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP链接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程当中,还有一些重要的概念。

未链接队列

在三次握手协议中,服务器维护一个未链接队列,该队列为每一个客户端的SYN包(syn=j)开设一个条目,该条目代表服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的链接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

关闭TCP链接:改进的三次握手

对于一个已经创建的链接,TCP使用改进的三次握手来释放链接(使用一个带有FIN附加标记的报文段)。TCP关闭链接的步骤以下:
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。
第二步,主机B收到这个FIN报文段以后,并不当即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知本身相应的应用程序:对方要求关闭链接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
第三步,主机B的应用程序告诉TCP:我要完全的关闭链接,TCP向主机A送一个FIN报文段。
第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示链接完全释放。[1]

3、套接字

概念:

源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
它是网络通讯过程当中端点的抽象表示,包含进行网络通讯必需的五种信息:链接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

中文名

套接字

外文名

socket

链接方式

经过传输层进行数据通讯

参 数

3

流式套接字

双向字节流

简介:

套接字,是支持TCP/IP的网络通讯的基本操做单元,能够看作是不一样主机之间的进程进行双向通讯的端点,简单的说就是通讯的两方的一种约定,用套接字中的相关函数来完成通讯过程。
很是很是简单的举例说明下:Socket=Ip address+ TCP/UDP + port。

通讯:

要经过Internet进行通讯,至少须要一对套接字,其中一个运行在客户端,称之为ClientSocket,另外一个运行于服务器端面,称为ServerSocket。根据链接启动的方式以及本地要链接的目标,套接字之间的链接过程能够分为三个步骤:服务器监听、客户端请求、链接确认。
服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待链接的状态,实时监控网络状态。
客户端请求是由客户端的套接字提出链接请求,要链接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要链接的服务器的套接字,指出服务器套接字的地址和端口号,而后再向服务器端套接字提出链接请求。
链接确认是当服务器端套接字监听到或者说接收到客户端套接字的链接请求时,它就响应客户端套接字的请求,创建一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此链接,链接便可创建。而服务器端继续处于监听状态,继续接收其余客户端的链接请求。

使用套接字进行数据处理有两种基本模式:同步和异步。

同步模式:
同步模式的特色是在经过Socket进行链接、接收、发送数据时,客户机和服务器在接收到对方响应前会处于阻塞状态,即一直等到收到对方请求才继续执行下面的语句。可见,同步模式只适用于数据处理不太多的场合。当程序执行的任务不少时,长时间的等待可能会让用户没法忍受。
异步模式:
异步模式的特色是在经过Socket进行链接、接收、发送操做时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行链接、接收、发送处理,这样就能够在调用发送或接收的方法后直接返回,并继续执行下面的程序。可见,异步套接字特别适用于进行大量数据处理的场合。
使用同步套接字进行编程比较简单,而异步套接字编程则比较复杂。

4、TCP/IP协议

概念:

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通信协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成本身的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求从新传输,直到全部数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

中文名

传输控制协议/因特网互联协议

外文名

Transmission Control Protocol/Internet Protocol

又 名

网络通信协议

简 称

TCP/IP协议

层级结构

4层

历史

为了减小网络设计的复杂性,大多数网络都采用分层结构。对于不一样的网络,层的数量、名字、内容和功能都不尽相同。在相同的网络中,一台机器上的第N层与另外一台机器上的第N层可利用第N层协议进行通讯,协议基本上是双方关于如何进行通讯所达成的一致。
不一样机器中包含的对应层的实体叫作对等进程。在对等进程利用协议进行通讯时,实际上并非直接将数据从一台机器的第N层传送到另外一台机器的第N层,而是每一层都把数据连同该层的控制信息打包交给它的下一层,它的下一层把这些内容看作数据,再加上它这一层的控制信息一块儿交给更下一层,依此类推,直到最下层。最下层是物理介质,它进行实际的通讯。相邻层之间有接口,接口定义下层向上层提供的原语操做和服务。相邻层之间要交换信息,对等接口必须有一致赞成的规则。层和协议的集合被称为网络体系结构。
每一层中的活动元素一般称为实体,实体既能够是软件实体,也能够是硬件实体。第N层实体实现的服务被第N+1层所使用。在这种状况下,第N层称为服务提供者,第N+1层称为服务用户。
服务是在服务接入点提供给上层使用的。服务可分为面向链接的服务和面向无链接的服务,它在形式上是由一组原语来描述的。这些原语可供访问该服务的用户及其余实体使用。

名词定义

IP:
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,由于IP并无作任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,一般假设包中的源地址是有效的。也能够这样说,IP地址造成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫做IP source routing,能够用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来讲,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它能够被用来欺骗系统来进行日常是被禁止的链接。那么,许多依靠IP源地址作确认的服务将产生问题而且会被非法入侵。
TCP:
TCP是面向链接的通讯协议,经过三次握手创建链接,通信完成时要拆除链接,因为TCP是面向链接的因此只能用于端到端的通信。
TCP提供的是一种可靠的数据流服务,采用“带重传的确定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
若是IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的链接。TCP数据包中包括序号和确认,因此未按照顺序收到的包能够被排序,而损坏的包能够被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向链接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)须要高度的可靠性,因此它们使用了TCP。DNS在某些状况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
UDP:
UDP是面向无链接的通信协议,UDP数据包括目的端口号和源端口号信息,因为通信不须要链接,因此能够实现广播发送。
UDP通信时不须要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP与TCP位于同一层,但它无论数据包的顺序、错误或重发。所以,UDP不被应用于那些使用虚电路的面向链接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务须要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,由于UDP没有创建初始化链接(也能够称为握手)(由于在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
ICMP:
ICMP与IP位于同一层,它被用来传送IP的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其余系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,若是路径不可用了,ICMP可使TCP链接‘体面地’终止。PING是最经常使用的基于ICMP的服务。
通信端口:
TCP和UDP服务一般有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着链接。用户使用Telnet客户程序与服务进程创建一个链接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。于是,这个链接是双工的,能够用来进行读写。
两个系统间的多重Telnet链接是如何相互确认并协调一致呢?TCP或UDP链接惟一地使用每一个信息中的以下四项进行确认:
(1)源IP地址 发送包的IP地址。
(2)目的IP地址 接收包的IP地址。
(3)源端口 源系统上的链接的端口。
(4)目的端口 目的系统上的链接的端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程一般使用一个固定的端口,例如,SMTP使用2五、Xwindows使用6000。这些端口号是‘广为人知’的,由于在创建与特定的主机或服务的链接时,须要这些地址和目的地址进行通信。
数据格式:
数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字)
IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
TCP数据信息:TCP头部+实际数据(TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
IP地址:
在Internet上链接的全部计算机,从大型机到微型计算机都是以独立的身份出现,咱们称它为主机。为了实现各主机间的通讯,每台主机都必须有一个惟一的网络地址。就好像每个住宅都有惟一的门牌同样,才不至于在传输资料时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的地址编号。因此,在Internet网络中,网络地址惟一地标识一台计算机。
咱们都已经知道,Internet是由几千万台计算机互相链接而成的。而咱们要确认网络上的每一台计算机,靠的就是能惟一标识该计算机的网络地址,这个地址就叫作IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。
在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,并且,用点分开的每一个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫作点数表示法。

OSI参考模型

OSI参考模型是ISO的建议,它是为了使各层上的协议国际标准化而发展起来的。OSI参考模型全称是开放系统互连参考模型(Open System Interconnection Reference Model)。这一参考模型共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图1所示。

clipboard.png

图1 OSI参考模型

物理层(Physical Layer)主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等。

数据链路层(Data Link Layer)的任务是增强物理层的功能,使其对网络层显示为一条无错的线路。

网络层(Network Layer)肯定分组从源端到目的端的路由选择。路由能够选用网络中固定的静态路由表,也能够在每一次会话时决定,还能够根据当前的网络负载情况,灵活地为每个分组分别决定。

传输层(Transport Layer)从会话层接收数据,并传输给网络层,同时确保到达目的端的各段信息正确无误,并且使会话层不受硬件变化的影响。一般,会话层每请求创建一个传输链接,传输层就会为其建立一个独立的网络链接。但若是传输链接须要一个较高的吞吐量,传输层也能够为其建立多个网络链接,让数据在这些网络链接上分流,以提升吞吐量。而另外一方面,若是建立或维持一个独立的网络链接不合算,传输层也可将几个传输链接复用到同一个网络链接上,以下降费用。除了多路复用,传输层还须要解决跨网络链接的创建和拆除,并具备流量控制机制。

会话层(Session Layer)容许不一样机器上的用户之间创建会话关系,既能够进行相似传输层的普通数据传输,也能够被用于远程登陆到分时系统或在两台机器间传递文件。

表示层(Presentation Layer)用于完成一些特定的功能,这些功能因为常常被请求,所以人们但愿有通用的解决办法,而不是由每一个用户各自实现。

应用层(Application Layer)中包含了大量人们广泛须要的协议。不一样的文件系统有不一样的文件命名原则和不一样的文本行表示方法等,不一样的系统之间传输文件还有各类不兼容问题,这些都将由应用层来处理。此外,应用层还有虚拟终端、电子邮件和新闻组等各类通用和专用的功能。

TCP/IP参考模型

TCP/IP参考模型是首先由ARPANET所使用的网络体系结构。这个体系结构在它的两个主要协议出现之后被称为TCP/IP参考模型(TCP/IP Reference Model)。这一网络协议共分为四层:网络访问层、互联网层、传输层和应用层,如图2所示。

clipboard.png

图2 TCP/IP参考模型
网络访问层(Network Access Layer)在TCP/IP参考模型中并无详细描述,只是指出主机必须使用某种协议与网络相连。
互联网层(Internet Layer)是整个体系结构的关键部分,其功能是使主机能够把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不一样的网络,到达的顺序和发送的顺序也可能不一样。高层若是须要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上很是类似。
传输层(Tramsport Layer)使源端和目的端机器上的对等实体能够进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。TCP是面向链接的协议,它提供可靠的报文传输和对上层应用的链接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无链接的不可靠传输的协议,主要用于不须要TCP的排序和流量控制等功能的应用程序。
应用层(Application Layer)包含全部的高层协议,包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain Name Service)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。TELNET容许一台机器上的用户登陆到远程机器上,并进行工做;FTP提供有效地将文件从一台机器上移到另外一台机器上的方法;SMTP用于电子邮件的收发;DNS用于把主机名映射到网络地址;NNTP用于新闻的发布、检索和获取;HTTP用于在WWW上获取主页。

层次
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。

clipboard.png

TCP/IP协议模块关系从协议分层模型方面来说,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。TCP/IP协议并不彻底符合OSI的七层参考模型,OSI(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通讯协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各类硬件在相同的层次上相互通讯。这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)。而TCP/IP通信协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成本身的需求。因为ARPANET的设计者注重的是网络互联,容许通讯子网(网络接口层)采用已有的或是未来有的各类协议,因此这个层次中没有提供专门的协议。实际上,TCP/IP协议能够经过网络接口层链接到任何网络上,例如X.25交换网或IEEE802局域网。注意tcp自己不具备数据传输中噪音致使的错误检测功能,可是有实现超时的错误重传功能;

相关文章
相关标签/搜索