网络与通信:网络协议(概念)

计算机网络技术是互联网发展的基础。它是计算机技术与通信技术结合的产物,是现在信息技术的一个重要组成部分,而且正朝着数字化、高速化、智能化的方向迅速发展。随着3G、4G技术的兴起,越来越多的企业参与到了网络与通信相关的行业的角逐,网络与通信相关的行业的角逐,网络与通信成为信息化浪潮的先锋。而对于网络相关技术的考察也越来越受到各大IT企业的重视。

  • TCP和UDP的区别有哪些
  • 什么叫三次握手什么叫四次断开
    • 引申1TCP为什么需要三次握手采用两次握手可以吗
    • 引申2为什么建立连接协议是三次握手而关闭连接却是四次握手
  • 什么是ARPRARP
  • ping命令是什么
  • 基本的HTTP流程有哪些

TCP和UDP的区别有哪些

传输层协议主要有TCP与UDP。UDP(User Datagram Protocol)提供无连接的通信,不能保证数据包被发送到目标地址,典型的即时传输少量数据的应用程序通常使用UDP。TCP(Transmission Control Protocol )是一种面向连接(连接导向)的、可靠的、基于字节流的通信协议,它为传输大量数据或为需要接受数据许可的应用程序提供连接定向和可靠的通信。

TCP连接就像打电话,用户拨特定的号码,对方在线并拿起电话,然后双方进行通话,通话完毕之后再挂断,整个过程是一个相互联系缺一不可的过程。而UDP连接就像发短信,用户短信发给对方,对方没有收到信息,发送者根本不知道,而且对方是否回答也不知道,对方对信息发送者发送消息也是一样。

TCP与UDP都是一种常用的通信方式,在特定的条件下发挥不同的作用。具体而言,TCP和UDP的区别主要表现为以下几个方面:

(1)TCP是面向连接的传输控制协议,而UDP提供的是无连接的数据报服务。

(2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无需等待对方的应答,所以回出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。

(3)TCP对系统资源要求较多,UDP对系统资源要求较少

(4)UDP具有较好的实时性,工作效率较TCP高。

(5)UDP的段结构比TCP的段结构简单,因此网络开销也小。

UDP比TCP的效率要高,为什么TCP还能够保留呢?其实,TCP和UDP各有所长、各有所短,适用于不同要求的通信环境,有些环境采用UDP确实高效,而有些环境需要可靠的连接,此时采用TCP则更好。在提及TCP的时候,一般也提及IP。IP协议是一种网络层协议,它规定每个互联网上的计算机都有一个唯一的IP地址,这样数据包就可以通过路由器的转发到达指定的计算机,但IP并不保证数据传输的可靠性。

什么叫三次握手?什么叫四次断开

TCP是一个面向连接的协议,所谓面向连接是指通信双方任何一方向对方发送数据前必须先建立安全通道,就像打电话一样,必须要等到对方的手机响铃,并且对方接听电话时,才能与对方通信。而UDP则不是面向连接的协议,基于UDP的通信双方不需要事先与对方协商并建立连接,也不管对方的IP地址与端口号是否存在,就直接发送数据,这个处理方式有点像手机发短信,不管对方手机是否停机或者关机,只管发送信息,不管对方是否能收到消息。

在TCP/IP中,采用三次握手来建立一次连接,

(1)第一次握手:建立连接时,客户端发送SYN包(假如序列号SEQ=100)给服务器,并进入SYN_SEND状态,等待服务器的确认。

(2)第二次握手:服务器收到SYN包之后,必须确认客户端,所以就要发送ACK包(ACK=101),同时服务器还必须发送SYN包(序列号 SEQ=300)等客户端的确认,此时服务器进入SYN_RECV状态

(3)第三次握手:客户端接收到SYN+ACK包之后,向服务器发送确认包(ACK=301),该包发送完毕,此时客户端与服务器进入ESTABLISHED,两者就可以进行数据交换了,完成三次握手。

由于TCP连接是全双工的,因此每个方向上都必须单独进行关闭,当一方完成数据发送任务后就能发送一个FIN来终止这个方向的连接。一个TCP连接在收到一个FIN之后仍然能够发送数据,首先进行关闭的一方将主动执行关闭,而另一方将会执行被动关闭。

(1)客户端发送数据完毕后,发送一个FIN,提出断开连接要求

(2)服务器收到该FIN包后,对其作出响应,发送一个ACK包,确认这一方向的连接将关闭

(3)等服务器的应用程序做好关闭准备时,服务器反方向发送一个FIN包给客户端,请求关闭连接请求。

(4)客户机对服务器发送的请求进行确认,并发送ACK包。

在第四步的时候,为什么需要TIME_WAIT?HOST1发送的ACK可能丢失并导致HOST2重新发送重新发送FIN消息,TIME_WAIT维护连接状态。如果执行主动关闭的一方HOST1不进入到TIME_WAIT状态就关闭连接,当重传的FIN消息到达时,因为TCP已经不再有连接的信息了,所以就用RST(重新启动)消息应答,导致HOST2进入错误的状态而不是有序终止状态。如果发送最后ACK消息的一方处于TIME_WAIT状态并仍然记录着连接的信息,它就可以正确地相应对等方HOST2的FIN消息了。

其次,TIME_WAIT为连接中“离群的段”提供从网络中消失的时间,通常情况下,因为TCP仅仅丢弃该数据并影响RST消息,所以这不会造成任何问题。当RST消息到达发出延时段的主机时,因为该主机也没有记录连接的任何信息,所以它也丢弃该段。然而,如果两个相同主机之间又建立 了一个具有相同端口号的新连接,那么离群的段就可能被看穿是新连接的;如果离群的段中数据的任何序列号恰恰在新连接的当前接收窗口中,数据就会被重新接收,其结果就是破坏新连接。。

引申1:TCP为什么需要三次握手,采用两次握手可以吗

建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

(1)TCP的三次握手过程:主机A向主机B发送连接请求,主机B对收到的主机A的报文段进行确认,主机A再次对主机B的确认进行确认。

(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑到这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B资源浪费。

(3)采用两次握手不行,原因就是上面说额失效的连接请求的特殊情况。。

引申2:为什么建立连接协议是三次握手,而关闭连接却是四次握手?

因为服务器端的LISTEN状态下的SOCKET收到SYN报文的建立连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你未必会马上关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示同意现在可以关闭连接了,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。。

什么是ARP/RARP

ARP(Address Resolution Protocol 地址解析协议)是一个位于TCP/IP协议栈的低层协议,它用于映射计算机的物理地址与网络IP地址。在Internet分布式环境中,每个主机都被分配了一个32位的网络地址,此时就存在将计算机的IP地址与物理地址之间的转换问题。ARP所要做的工作就是在主机发送帧前,根据目标IP地址获取MAC地址,以保证通信过程的顺畅。

具体过程如下:

(1)每台主机都会在自己的ARP缓冲区中建立一个ARP列表,用于存储IP地址与MAC地址的对应关系。

(2)当源主机需要将一个数据包发送到目标主机时,会先检查自己的ARP列表是否存在该IP地址对应的MAC地址。如果存在则直接将数据包发送到该MAC地址;如果不存在,就向本地网段发起一个ARP请求的广播包,由于查询目标主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址以及目标主机的IP地址等。

(3)网络中所有的主机收到这个ARP请求之后,会检查数据包中的IP是否与自己的IP地址一致,如果不同就忽略此数据包;如果相同,该主机会将发送端的MAC地址与IP地址添加到自己的ARP列表中。如果ARP列表中已经存在该IP地址的相关信息,则将其覆盖掉,接着给源主机发送一个ARP响应包,告诉对方自己是它所找的MAC地址。

(4)源主机收到这个ARP响应包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应包,则表示ARP查询失败。

RARP与ARP工作方式相反。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。RARP获取IP地址的过程如下:

首先需要知道自己IP地址的机器向另一台机器上的服务器发送请求,并等待服务器发出响应,开始不知道服务器的物理地址所以通过广播。一旦通过广播对地址的请求,就必须唯一标识自己的硬件标识(如CPU序列号),这个标识能让可执行程序容易获得。源主机收到从RARP服务器的响应消息后,就可以利用得到的IP地址进行通信。

ping命令是什么

Ping(Packet Internet Grope,因特网包探索器)是一个用于测试网络连接量的程序。它使用的是ICMP,ping发送一个ICMP(Internet Control and Message Protocal,因特网控制报文协议)请求消息给目的地并报告是否收到所希望的ICMP应答。

ICMP是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。它是用来检查网络是否通畅或网络连接速度的命令。

由于网络上的机器都有唯一确定的IP地址,当给目标IP地址发送一个数据包(包括对方的IP地址和自己的地址以及序列数)时,对方就要返回一个同样大小的数据包(包括双方地址),根据返回的数据包可以确定目标主机的存在,可以初步判断目标主机的操作系统等。

基本的HTTP流程有哪些

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,其主要负责服务器与浏览器之间的通信。HTTP把客户端浏览器的请求发送到服务器,并把响应的网页内容由服务器返回到客户端浏览器。

一次完整的HTTP流程一般包括以下几个步骤:

(1)打开HTTP连接。因为HTTP是一种无状态协议,所以每一个请求都需要建立一个新的连接。

(2)初始化方法请求。包含一些类型的方法指示符,它们用来描述调用什么方法和需要什么参数

(3)设置HTTP请求头。包含要传输的数据类型和数据长度

(4)发送请求。即将二进制流写入服务器

(5)读取请求。调用目标servlet程序,并接受HTTP请求数据。如果该次请求为客户端第一次请求,则需要创建一个新的服务器对象实例。

(6)调用方法。提供了服务器端调用对象的方法

(7)初始化响应方法。如果调用的方法出现异常,客户将会受到出错信息;否则,发送返回类型

(8)设置HTTP响应头。响应头中设置待发送的数据类型与长度

(9)发送响应。服务器端发送二进制流给客户端作为响应。

(10)关闭连接,当响应结束后,与服务器必须断开连接,以保证其他请求能够与服务器建立连接。

时间: 2024-10-09 21:59:46

网络与通信:网络协议(概念)的相关文章

编程思想:如何设计一个好的通信网络协议

当网络中两个进程需要通信时,我们往往会使用 Socket 来实现.Socket 都不陌生.当三次握手成功后,客户端与服务端就能通信,并且,彼此之间通信的数据包格式都是二进制,由 TCP/IP 协议负责传输. 当客户端和服务端取得了二进制数据包后,我们往往需要『萃取』出想要的数据,这样才能更好的执行业务逻辑.所以,我们需要定义好数据结构来描述这些二进制数据的格式,这就是通信网络协议.简单讲,就是需要约定好二进制数据包中每一段字节的含义,比如从第 n 字节开始的 m 长度是核心数据,有了这样的约定后

初始网络进程通信

可以这样说:我们在网络上只做一件事,利用各种软件没完没了的相互通信. 对于单机系统而言,进程在系统中有自己唯一的进程号.但在网络环境下,各主机独立分配的进程号不能唯一标识该进程.例如,主机A赋于某进程号5,在B机中也可以存在5号进程,因此,“5号进程”这句话就没有意义了.而且 操作系统支持的网络协议众多,不同协议的工作方式不同,地址格式也不同.因此,网间进程通信还要解决多重协议的识别问题. 为此,TCP/IP协议为网间进程通信问题建立了IP地址,端口,Socket(套接字)等概念.      (

Python TCP通信网络编程

最近在看廖雪峰老师的基础教程(http://www.liaoxuefeng.com/),今天实现了一下简单Python的Socket的网络编程. 1. Socket网络编程 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 2. 客户端 大多数连接都是可靠的TCP连接.创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器.举个例子,当我们在浏览器中访问新浪时,我

入木三分学网络第一篇--VRRP协议详解第一篇(转)

因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静态网关出现单点失效现象的路由协议. VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器(位于一个虚拟路由器组中, 在该组中,只有一台路由器--master路由器工作,转发数据包,其它路由器是backup路由器,不参与转发数据包),以及在实

2016.8.14 网络工程师之网关协议

1.路由器又叫做IP网关,网关协议就是用于网关之间交换路由信息的协议 2.自治系统: (1)自治系统是由同构型的网关连接的因特网,自治系统内部的网关之间执行内部网关协议(IGP),互相交换路由信息 (2)IGP是自治系统内部专用的,为特定的应用服务,在自治系统之外是无效的: (3)一个因特网也可能由不同的自治系统互连而成,例如若干个校园网通过广域网互连就是这种情况:在不同的自治系统之间采用外部网关协议(EGP)交换路由信息 3.外部网关协议: (1)EGP以自治系统为节点,通告各个网关可到达哪些

iOS网络编程开发—HTTP协议

iOS网络编程开发—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源

网络与通信:网络其他问题

计算机网络技术是互联网发展的基础.它是计算机技术与通信技术结合的产物,是现在信息技术的一个重要组成部分,而且正朝着数字化.高速化.智能化的方向迅速发展.随着3G.4G技术的兴起,越来越多的企业参与到了网络与通信相关的行业的角逐,网络与通信相关的行业的角逐,网络与通信成为信息化浪潮的先锋.而对于网络相关技术的考察也越来越受到各大IT企业的重视. 常用的网络安全防护措施有哪些 什么是SQL注入式攻击 电路交换技术报文交换技术和分组交换技术有什么区别 相比IPV4IPV6有什么优点 常用的网络安全防护

(转) 在linux网络UDP通信中,关于客户端是否绑定的理解

最近在做一个实例,是用RTSP协议完成.服务器已经有了,只需要把客户端做好就行了,在做的过程中发现了一些问题,就是关于UDP客户端是否绑定的问题. 也许大家在书上看到的大多都是说UDP客户端不需要绑定,直接就可以和服务器通信,一开始我也是这样认为的,而且我也是这样做的,可是做着做着发现出现了问题. 在UDP通信中,我们建立一个服务器,进行绑定,等待客户端的连接请求,现把服务器的代码贴出来简述: ///////////*****************************server.c***

PLC通信网络

PLC通信网络的分层 PLC通信网络大致可分为3层,管理层,单元层以及现场执行(AS-I)层.如下图所示. 在PLC通信网络的三层架构中,管理层,通.信方式包括MPI,工业以太网(Profinet)以及Profibus三种通讯方式. MPI通信多用于西门子内部产品通讯,以及对下位机调试监控时使用.MPI是一种通信协议,其物理接口底层是RS-485,每个点都有自己的网络地址,通过建立全局数据表,进行小数据量通信,MPI网络通讯速率可达19.2kbit/s-12Mbit/s. Profibus总线由