㈠ TCP/IP协议介绍全一点的急用
TCP/IP 协议簇 TCP/IP(Transmission Control Protocol/Internet Protocol)已成为一个事实上的工业 标准。 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第 三层(对应OSI的第四层)。 TCP和IP是TCP/IP协议簇的中间两层,是整个协议簇的核心,起到了承上启下的作用。 1、接口层 TCP/IP的最低层是接口层,常见的接口层协议有: Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP等。 2、网络层 网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol) 控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向 地址转换协议。 IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务 。 ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。 Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。 ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。 RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。 3、传输层 传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协 议UDP(User Datagram rotocol)。 TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP 是面向连接的所以只能用于点对点的通讯。 TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠 性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用 以限制发送方的发送速度。 UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要 连接,所以可以实现广播发送。 UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求 在程序员编程验证。 4、应用层 应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。 FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口 是20H,控制端口是21H。 Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。 DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中 转。 POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。 数据格式: 数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字) IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等) TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校 验字等)
㈡ tcp ip数据包传输过程
“……3.A的默认网关R1接到A送来的以太网帧,并搜索自已的ARP缓存……”
这句话也不一定:
R1收到A发来的包,先查看IP报头,找到目的地址,看目标是否是直连可达的,然后才会搜索本地ARP缓存;
如果目标不在本地直连接口,则去查找路由表(而不是ARP缓存),然后送往下一跳路由器!
㈢ TCP/IP是什么意思
TCP/IP是一个互联网通信协议。互联网协议是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。
TCP / IP(传输控制协议/互联网协议),也称为互联网协议套件,是万维网的核心通信系统,它使每个连接互联网的设备能够同时与其他所有此类设备进行通信。
实质上,它是安装在每台计算机上的计算机化语法(语言),用于公共(Internet)和专用(内部网和外部网)网络。该协议的发展使互联网以及在线商务迅速发展。
因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(英语:TCP/IP Protocol Stack) 。
这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目,因此也被称作DoD模型(DoD Model)。这个协议族由互联网工程任务组负责维护。
(3)tcp网络协议如何找到下一跳扩展阅读:
TCP/IP的运作:
TCP / IP是一个双层程序:较高层(TCP)将消息内容反汇编成小的“数据包”,然后通过因特网传输,由接收计算机的TCP重新组装回消息的原始形式。
较低层(IP)扮演“地址管理器”的角色,并将每个数据包发送到正确的目的地。IP地址由网络中的每台计算机检查,以确保根据需要转发消息。
TCP / IP在客户端,服务器通信模型上运行,这意味着第一计算机(客户端)的用户向第二网络计算机(服务器)发出服务请求,例如转发网页。
TCP / IP还依赖于点对点通信,这意味着通信在预定义的网络边界内从一台主机移动到另一台主机。最后,TCP / IP被认为是无状态的,因为每个请求都是新的,与之前的所有请求无关,使得所有人都可以自由地使用网络路径。
电子商务企业需要熟悉的许多更高级别的应用程序利用和/或构建在TCP / IP上。这些应用程序构成了更高层的协议语言,并且通常与TCP / IP一起打包为单个“套件”。例子包括:
HTTP(Internet的超文本传输协议)。
FTP(互联网的文件传输协议)。
Telnet,可以从远程位置登录计算机。
SMTP(简单邮件传输协议)。
通过模拟电话调制解调器访问互联网将涉及使用两种特殊协议之一:SLIP(串行线路互联网协议)或PPP(点对点协议)。这些协议的功能是以一种形式“封装”数据包,允许它们通过拨号电话连接发送到接入提供商的调制解调器。
UDP(用户数据报协议)是TCP的替代方案,有时用于非常专业的目的。它使用超简单的“无连接”传输,只需要最少量的协议。它主要用于在线应用程序之间的低延迟,容忍损失的连接。
用于交换路由器数据的TCP / IP相关协议包括:
ICMP(Internet控制消息协议)。
IGP(内部网关协议)。
EGP(外部网关协议)。
BGP(边界网关协议)。
参考资料来源:网络-TCP/IP协议
㈣ tcp/ip协议在ISO 7层协议中的位置及上下层关系
TCP/IP协议是
网络接口层
物理层是定义物理介质的各种特性: 1、机械特性。 2、电子特性。 3、功能特性。 4、规程特性。 数据链路层是负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据包,交给IP层。 常见的接口层协议有: Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。
网络层
负责相邻计算机之间的通信。其功能包括三方面。 一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。 二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。 三、处理路径、流控、拥塞等问题。 网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol) 控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。 IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务。 ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。 Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。 ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。 RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站还有DHCP服务。
传输层
提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。 传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。
应用层
向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。 应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。 FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。 Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。 DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转。 POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。
OSI协议是
物理层
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。 物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指DTE和DCE间的互连设备。DTE即数据终端设备,又称物理设备,如计算机、终端等都包括在内。而DCE则是数据通信设备或电路连接设备,如调制解调器等。数据传输通常是经过DTE-DCE,再经过DCE-DTE的路径。互连设备指将DTE、DCE连接起来的装置,如各种插头、插座。LAN中的各种粗、细同轴电缆、T型接头、插头、接收器、发送器、中继器等都属物理层的媒体和连接器。 物理层的主要功能是:①为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活物理连接、传送数据和终止物理连接。所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,形成一条通路。②传输数据。物理层要形成适合数据传输需要的实体,为数据传送服务。一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒钟内能通过的比特(Bit)数),以减少信道上的拥塞。传输数据的方式能满足点到点,一点到多点,串行或并行,半双工或全双工,同步或异步传输的需要。③完成物理层的一些管理工作。 涉及的协议有:RS-232,RS-449,X.21、V.35、ISDN、FDDI、IEEE802.3、IEEE802.4、IEEEE802.5等。
数据链路层
数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输介质及其连接。介质是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两个过程。这种建立起来的数据收发关系就叫做数据链路。而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错。数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。 链路层是为网络层提供数据传送服务的,这种服务要依靠本层具备的功能来实现。链路层应具备如下功能: (1)链路连接的建立、拆除和分离; (2)帧定界和帧同步。链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界; (3)顺序控制,指对帧的收发顺序的控制; (4)差错检测和恢复。还有链路标识,流量控制等等。差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测。各种错误的恢复则常靠反馈重发技术来完成。 独立的链路产品中最常见的当属网卡,网桥也是链路产品。数据链路层将本质上不可靠的传输媒体变成可靠的传输通路提供给网络层。在IEEE802.3情况下,数据链路层分成了两个子层,一个是逻辑链路控制,另一个是媒体访问控制。图所示为IEEE802.3LAN体系结构。 其中 AUI——连接单元接口 PMA——物理媒体连接 MAU——媒体连接单元 PLS——物理信令 MDI——媒体相关接口 涉及的协议有:HDLC、LAP-B、ISO8802等。
网络层
网络层的产生也是网络发展的结果。在联机系统和线路交换的环境中,网络层的功能没有太大意义。当数据终端增多时。它们之间有中继设备相连,此时会出现一台终端要求不只是与惟一的一台而是能和多台终端通信的情况,这就产生了把任意两台数据终端设备的数据链接起来的问题,也就是路由或者叫寻径。另外,当一条物理信道建立之后,被一对用户使用,往往有许多空闲时间被浪费掉。人们自然会希望让多对用户共用一条链路,为解决这一问题就出现了逻辑信道技术和虚拟电路技术。 网络层为建立网络连接和为上层提供服务,应具备以下主要功能: (1)路由选择和中继; (2)激活,终止网络连接; (3)在一条数据链路上复用多条网络连接,多采取时分复用技术; (4)检测与恢复; (5)排序,流量控制; (6)服务选择; (7)网络管理。 涉及的协议有:CCITT X.213、ISO8878、X.223、ISO9542等。
传输层
传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求;当网络层服务质量较好时,它只用很少的工作。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。传输层也称为运输层。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层。因为它是源端到目的端对数据传送进行控制从低到高的最后一层。 有一个既存事实,即世界上各种通信子网在性能上存在着很大差异。例如电话交换网,分组交换网,公用数据交换网,局域网等通信子网都可互连,但它们提供的吞吐量,传输速率,数据延迟通信费用各不相同。对于会话层来说,却要求有一性能恒定的界面。传输层就承担了这一功能。它采用分流/合流,复用/介复用技术来调节上述通信子网的差异,使会话层感受不到。 此外传输层还要具备差错恢复,流量控制等功能,以此对会话层屏蔽通信子网在这些方面的细节与差异。传输层面对的数据对象已不是网络地址和主机地址,而是会话层的界面端口。上述功能的最终目的是为会话提供可靠的,无误的数据传输。传输层的服务一般要经历传输连接建立、数据传送、传输连接释放3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种。 涉及协议有:ISO8073、ISO8602、TP0、TP1、TP2、TP3、TP4等。
会话层
会话层提供的服务是应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。会话层,表示层,应用层构成开放系统的高3层,面向应用进程提供分布处理、对话管理、信息表示、检查和恢复与语义上下文有关的传送差错等。为给两个对等会话服务用户建立一个会话连接,应该做如下几项工作: (1) 将会话地址映射为运输地址; (2) 数据传输阶段; (3)连接释放。 涉及协议有:ISO8326、CCITT X.215、ISO8327DENG 。
表示层
表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要会话层来完成这种转换。通过前面的介绍,我们可以看出,会话层以下5层完成了端到端的数据传送,并且是可靠的、无差错的传送。但是数据传送只是手段而不是目的,最终是要实现对数据的使用。由于各种系统对数据的定义并不完全相同,最易明白的例子是键盘——其上的某些键的含义在许多系统中都有差异。这自然给利用其它系统的数据造成了障碍。表示层和应用层就担负了消除这种障碍的任务。 涉及协议有:APDU、ISO8824、ISO8825、CCITT X.209、CCITT X.216等。
应用层
应用层向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。有些可为多种应用程序共同使用,有些则为较少的一类应用程序使用。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。 涉及协议有:ISO8649、ISO9066、ISO9072、ISO9804、CCITT X.227、CCITT X.228、CCITT X.229、CCITT X.247、CMIP、CMIS、CCITT X.500等。
㈤ TCP/IP、SIP协议
TCP/IP协议 (传输控制协议/网间协议)
TCP/IP 协议集确立了 Internet 的技术基础。TCP/IP 的发展始于美国 DOD (国防部)方案。 IAB (Internet 架构委员会)的下属工作组 IETF (Internet 工程任务组)研发了其中多数协议。 IAB 最初由美国政府发起,如今转变为公开而自治的机构。IAB 协同研究和开发 TCP/IP 协议集的底层结构,并引导着 Internet 的发展。TCP/IP 协议集记录在请求注解(RFC)文件中,RFC 文件均由 IETF 委员会起草、讨论、传阅及核准。所有这些文件都是公开且免费的,且能在 IETF 网站上列出的参考文献中找到。
TCP/IP 协议覆盖了 OSI 网络结构七层模型中的六层,并支持从交换(第二层)诸如多协议标记交换,到应用程序诸如邮件服务方面的功能。TCP/IP 的核心功能是寻址和路由选择(网络层的 IP/IPV6 )以及传输控制(传输层的 TCP、UDP)。
IP (网际协议)
在网络通信中,网络组件的寻址对信息的路由选择和传输来说是相当关键的。相同网络中的两台机器间的消息传输有各自的技术协定。LAN 是通过提供6字节的唯一标识符(“MAC”地址)在机器间发送消息的。SNA 网络中的每台机器都有一个逻辑单元及与其相应的网络地址。DECNET、AppleTalk 和 Novell IPX 均有一个用来分配编号到各个本地网和工作站的配置。
除了本地或特定提供商的网络地址,IP 为世界范围内的各个网络设备都分配了一个唯一编号,即 IP 地址。IPV4 的 IP 地址为4字节,按照惯例,将每个字节转化成十进制(0-255)并以点分隔各字节。IPV6 的 IP 地址已经增加到16字节。关于 IP 和 IPV6 协议的详细说明,在相关文件中再另作介绍。
TCP (传输控制协议)
通过序列化应答和必要时重发数据包,TCP 为应用程序提供了可靠的传输流和虚拟连接服务。TCP 主要提供数据流转送,可靠传输,有效流控制,全双工操作和多路传输技术。可查阅 TCP 部分获取更多详细资料。
在下面的 TCP/IP 协议表格中,我们根据协议功能和其在 OSI 七层网络通信参考模型的映射关系将其全部列出。然而,TCP/IP 并不完全遵循 OSI 模型,例如:大多数 TCP/IP 应用程序是直接在传输层协议 TCP 和 UDP 上运行,而不涉及其中的表示层和会话层。
主要协议表
IP TCP UDP IPsec HTTP POP3 SNMP MPLS DNS SMTP
应用层(Application Layer)
--------------------------------------------------------------------------------
BOOTP:引导协议 (BOOTP:Bootstrap Protocol)
DCAP:数据转接客户访问协议 (DCAP:Data Link Switching Client Access Protocol)
DHCP:动态主机配置协议 (DHCP:Dynamic Host Configuration Protocol)
DNS:域名系统(服务)系统 (DNS:Domain Name Systems)
Finger:用户信息协议 (Finger:User Information Protocol)
FTP:文件传输协议 (FTP:File Transfer Protocol)
HTTP:超文本传输协议 (HTTP:Hypertext Transfer Protocol)
S-HTTP:安全超文本传输协议 (S-HTTP:Secure Hypertext Transfer Protocol)
IMAP & IMAP4:信息访问协议 & 信息访问协议第4版 (IMAP & IMAP4:Internet Message Access Protocol)
IPDC:IP 设备控制 (IPDC:IP Device Control)
IRCP/IRC:因特网在线聊天协议 (IRCP/IRC:Internet Relay Chat Protocol)
LDAP:轻量级目录访问协议 (LDAP:Lightweighted Directory Access Protocol)
MIME/S-MIME/Secure MIME:多用途网际邮件扩充协议 (MIME/S-MIME/Secure MIME:Multipurpose Internet Mail Extensions)
NAT:网络地址转换 (NAT:Network Address Translation)
NNTP:网络新闻传输协议 (NNTP:Network News Transfer Protocol)
NTP:网络时间协议 (NTP:Network Time Protocol)
POP&POP3:邮局协议 (POP & POP3:Post Office Protocol)
RLOGIN:远程登录命令 (RLOGIN:Remote Login in Unix)
RMON:远程监控 (RMON:Remote Monitoring MIBs in SNMP)
RWhois:远程目录访问协议 (RWhois Protocol)
SLP:服务定位协议 (SLP:Service Location Protocol)
SMTP:简单邮件传输协议 (SMTP:Simple Mail Transfer Protocol)
SNMP:简单网络管理协议 (SNMP:Simple Network Management Protocol)
SNTP:简单网络时间协议 (SNTP:Simple Network Time Protocol)
TELNET:TCP/IP 终端仿真协议 (TELNET:TCP/IP Terminal Emulation Protocol)
TFTP:简单文件传输协议 (TFTP:Trivial File Transfer Protocol)
URL:统一资源管理 (URL:Uniform Resource Locator)
X-Window/X Protocol:X 视窗 或 X 协议(X-Window:X Window or X Protocol or X System)
表示层(Presentation Layer)
--------------------------------------------------------------------------------
LPP:轻量级表示协议 (LPP:Lightweight Presentation Protocol)
会话层(Session Layer)
--------------------------------------------------------------------------------
RPC:远程过程调用协议 (RPC:Remote Procere Call protocol)
传输层(Transport Layer)
--------------------------------------------------------------------------------
ITOT:基于TCP/IP 的 ISO 传输协议 (ITOT:ISO Transport Over TCP/IP)
RDP:可靠数据协议 (RDP:Reliable Data Protocol)
RUDP:可靠用户数据报协议 (RUDP:Reliable UDP)
TALI:传输适配层接口 (TALI:Transport Adapter Layer Interface)
TCP:传输控制协议 (TCP:Transmission Control Protocol)
UDP:用户数据报协议 (UDP:User Datagram Protocol)
Van Jacobson:压缩 TCP 协议 (Van Jacobson:Compressed TCP)
网络层(Network Layer)
--------------------------------------------------------------------------------
路由选择(Routing)
BGP/BGP4:边界网关协议 (BGP/BGP4:Border Gateway Protocol)
EGP:外部网关协议(EGP:Exterior Gateway Protocol)
IP:网际协议 (IP:Internet Protocol)
IPv6:网际协议第6版 (IPv6:Internet Protocol version 6)
ICMP/ICMPv6:Internet 信息控制协议 (ICMP/ICMPv6:Internet Control Message Protocol)
IRDP:ICMP 路由器发现协议 (IRDP:ICMP Router Discovery Protocol)
Mobile IP: 移动 IP (Mobile IP:IP Mobility Support Protocol for IPv4 & IPv6)
NARP:NBMA 地址解析协议 (NARP:NBMA Address Resolution Protocol)
NHRP:下一跳解析协议 (NHRP:Next Hop Resolution Protocol)
OSPF:开放最短路径优先 (OSPF:Open Shortest Path First)
RIP/RIP2:路由选择信息协议 (RIP/RIP2:Routing Information Protocol)
RIPng:路由选择信息协议下一代 (RIPng:RIP for IPv6)
RSVP:资源预留协议 (RSVP:Resource ReSerVation Protocol)
VRRP:虚拟路由器冗余协议 (VRRP:Virtual Router Rendancy Protocol)
组播(Multicast)
BGMP:边界网关组播协议 (BGMP:Border Gateway Multicast Protocol)
DVMRP:距离矢量组播路由协议 (DVMRP:Distance Vector Multicast Routing Protocol)
IGMP:Internet 组管理协议 (IGMP:Internet Group Management Protocol)
MARS:组播地址解析服务 (MARS:Multicast Address Resolution Server)
MBGP:组播协议边界网关协议 (MBGP:Multiprotocol BGP)
MOSPF:组播OSPF (MOSPF:Multicast OSPF)
MSDP:组播源发现协议 (MSDP:Multicast Source Discovery Protocol)
MZAP:组播区域范围公告协议 (MZAP:Multicast Scope Zone Announcement Protocol)
PGM:实际通用组播协议 (PGM:Pragmatic General Multicast Protocol)
PIM-DM:密集模式独立组播协议 (PIM-DM:Protocol Independent Multicast - Dense Mode)
PIM-SM:稀疏模式独立组播协议 (PIM-SM:Protocol Independent Multicast - Sparse Mode)
MPLS 协议(MPLS Protocols)
CR-LDP:基于路由受限标签分发协议 (CR-LDP: Constraint-Based Label Distribution Protocol)
GMPLS:通用多协议标志交换协议 (GMPLS:Generalized Multiprotocol Label Switching)
LDP:标签分发协议 (LDP:Label Distribution Protocol)
MPLS:多协议标签交换 (MPLS:Multi-Protocol Label Switching)
RSVP-TE:基于流量工程扩展的资源预留协议 (RSVP-TE:Resource ReSerVation Protocol-Traffic Engineering)
数据链路层(Data Link Layer)
--------------------------------------------------------------------------------
ARP and InARP:地址转换协议和逆向地址转换协议 (ARP and InARP:Address Resolution Protocol and Inverse ARP)
IPCP and IPv6CP:IP控制协议和IPV6控制协议 (IPCP and IPv6CP:IP Control Protocol and IPv6 Control Protocol)
RARP:反向地址转换协议 (RARP:Reverse Address Resolution Protocol)
SLIP:串形线路 IP (SLIP:Serial Line IP)
SIP
介绍
新一代的服务
历史回顾
SIP 的优点:类似 Web 的可扩展开放通信
SIP 会话构成
介绍
通信提供商及其合作伙伴和用户越来越渴求新一代基于 IP 的服务。现在有了 SIP(会话启动协议),一解燃眉之急。SIP 是不到十年前在计算机科学实验室诞生的一个想法。它是第一个适合各种媒体内容而实现多用户会话的协议,现在已成了 Internet 工程任务组 (IETF) 的规范。
今天,越来越多的运营商、CLEC(竞争本地运营商)和 ITSP(IP 电话服务商)都在提供基于 SIP 的服务,如市话和长途电话技术、在线信息和即时消息、IP Centrex/Hosted PBX、语音短信、push-to-talk(按键通话)、多媒体会议等等。独立软件供应商 (ISV) 正在开发新的开发工具,用来为运营商网络构建基于 SIP 的应用程序以及 SIP 软件。网络设备供应商 (NEV) 正在开发支持 SIP 信令和服务的硬件。现在,有众多 IP 电话、用户代理、网络代理服务器、VOIP 网关、媒体服务器和应用服务器都在使用 SIP。
SIP 从类似的权威协议--如 Web 超文本传输协议 (HTTP) 格式化协议以及简单邮件传输协议 (SMTP) 电子邮件协议--演变而来并且发展成为一个功能强大的新标准。但是,尽管 SIP 使用自己独特的用户代理和服务器,它并非自成一体地封闭工作。SIP 支持提供融合的多媒体服务,与众多负责身份验证、位置信息、语音质量等的现有协议协同工作。
本白皮书对 SIP 及其作用进行了概括性的介绍。它还介绍了 SIP 从实验室开发到面向市场的过程。本白皮书说明 SIP 提供哪些服务以及正在实施哪些促进发展的方案。它还详细介绍了 SIP 与各种协议不同的重要特点并说明如何建立 SIP 会话。
返回页首
新一代的服务
SIP 较为灵活,可扩展,而且是开放的。它激发了 Internet 以及固定和移动 IP 网络推出新一代服务的威力。SIP 能够在多台 PC 和电话上完成网络消息,模拟 Internet 建立会话。
与存在已久的国际电信联盟 (ITU) SS7 标准(用于呼叫建立)和 ITU H.323 视频协议组合标准不同,SIP 独立工作于底层网络传输协议和媒体。它规定一个或多个参与方的终端设备如何能够建立、修改和中断连接,而不论是语音、视频、数据或基于 Web 的内容。
SIP 大大优于现有的一些协议,如将 PSTN 音频信号转换为 IP 数据包的媒体网关控制协议 (MGCP)。因为 MGCP 是封闭的纯语音标准,所以通过信令功能对其进行增强比较复杂,有时会导致消息被破坏或丢弃,从而妨碍提供商增加新的服务。而使用 SIP,编程人员可以在不影响连接的情况下在消息中增加少量新信息。
例如,SIP 服务提供商可以建立包含语音、视频和聊天内容的全新媒体。如果使用 MGCP、H.323 或 SS7 标准,则提供商必须等待可以支持这种新媒体的协议新版本。而如果使用 SIP,尽管网关和设备可能无法识别该媒体,但在两个大陆上设有分支机构的公司可以实现媒体传输。
而且,因为 SIP 的消息构建方式类似于 HTTP,开发人员能够更加方便便捷地使用通用的编程语言(如 Java)来创建应用程序。对于等待了数年希望使用 SS7 和高级智能网络 (AIN) 部署呼叫等待、主叫号码识别以及其他服务的运营商,现在如果使用 SIP,只需数月时间即可实现高级通信服务的部署。
这种可扩展性已经在越来越多基于 SIP 的服务中取得重大成功。Vonage 是针对用户和小企业用户的服务提供商。它使用 SIP 向用户提供 20,000 多条数字市话、长话及语音邮件线路。Deltathree 为服务提供商提供 Internet 电话技术产品、服务和基础设施。它提供了基于 SIP 的 PC 至电话解决方案,使 PC 用户能够呼叫全球任何一部电话。Denwa Communications 在全球范围内批发语音服务。它使用 SIP 提供 PC 至 PC 及电话至 PC 的主叫号码识别、语音邮件,以及电话会议、统一通信、客户管理、自配置和基于 Web 的个性化服务。
某些权威人士预计,SIP 与 IP 的关系将发展成为类似 SMTP 和 HTTP 与 Internet 的关系,但也有人说它可能标志着 AIN 的终结。迄今为止,3G 界已经选择 SIP 作为下一代移动网络的会话控制机制。Microsoft 已经选择 SIP 作为其实时通信策略并在 Microsoft XP、Pocket PC 和 MSN Messenger 中进行了部署。Microsoft 同时宣布 CE.net 的下一个版本将使用基于 SIP 的 VoIP 应用接口层,并承诺向用户 PC 提供基于 SIP 的语音和视频呼叫。
另外,MCI 正在使用 SIP 向 IP 通信用户部署高级电话技术服务。用户将能够通知主叫方自己是否有空以及首选的通信方式,如电子邮件、电话或即时消息。利用在线信息,用户还能够即时建立聊天会话和召开音频会议。使用 SIP 将不断地实现各种功能。
返回页首
历史回顾
SIP 出现于二十世纪九十年代中期,源于哥伦比亚大学计算机系副教授 Henning Schulzrinne 及其研究小组的研究。Schulzrinne 教授除与人共同提出通过 Internet 传输实时数据的实时传输协议 (RTP) 外,还与人合作编写了实时流传输协议 (RTSP) 标准提案,用于控制音频视频内容在 Web 上的流传输。
Schulzrinne 本来打算编写多方多媒体会话控制 (MMUSIC) 标准。1996 年,他向 IETF 提交了一个草案,其中包含了 SIP 的重要内容。1999 年,Shulzrinne 在提交的新标准中删除了有关媒体内容方面的无关内容。随后,IETF 发布了第一个 SIP 规范,即 RFC 2543。虽然一些供应商表示了担忧,认为 H.323 和 MGCP 协议可能会大大危及他们在 SIP 服务方面的投资,IETF 继续进行这项工作,于 2001 年发布了 SIP 规范 RFC 3261。
RFC 3261 的发布标志着 SIP 的基础已经确立。从那时起,已发布了几个 RFC 增补版本,充实了安全性和身份验证等领域的内容。例如,RFC 3262 对临时响应的可靠性作了规定。RFC 3263 确立了 SIP 代理服务器的定位规则。RFC 3264 提供了提议/应答模型,RFC 3265 确定了具体的事件通知。
早在 2001 年,供应商就已开始推出基于 SIP 的服务。今天,人们对该协议的热情不断高涨。Sun Microsystems 的 Java Community Process 等组织正在使用通用的 Java 编程语言定义应用编程接口 (API),以便开发商能够为服务提供商和企业构建 SIP 组件和应用程序。最重要的是,越来越多的竞争者正在借助前途光明的新服务进入 SIP 市场。SIP 正在成为自 HTTP 和 SMTP 以来最为重要的协议之一。
返回页首
SIP 的优点:类似 Web 的可扩展开放通信
使用 SIP,服务提供商可以随意选择标准组件,快速驾驭新技术。不论媒体内容和参与方数量,用户都可以查找和联系对方。SIP 对会话进行协商,以便所有参与方都能够就会话功能达成一致以及进行修改。它甚至可以添加、删除或转移用户。
不过,SIP
不是万能的。它既不是会话描述协议,也不提供会议控制功能。为了描述消息内容的负载情况和特点,SIP 使用 Internet 的会话描述协议 (SDP) 来描述终端设备的特点。SIP 自身也不提供服务质量 (QoS),它与负责语音质量的资源保留设置协议 (RSVP) 互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议 (LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。
SIP 规定了以下基本的通信要求:
1. 用户定位服务
2. 会话建立
3. 会话参与方管理
4. 特点的有限确定
SIP 的一个重要特点是它不定义要建立的会话的类型,而只定义应该如何管理会话。有了这种灵活性,也就意味着 SIP 可以用于众多应用和服务中,包括交互式游戏、音乐和视频点播以及语音、视频和 Web 会议。
下面是 SIP 在新的信令协议中出类拔萃的一些其他特点
SIP 消息是基于文本的,因而易于读取和调试。新服务的编程更加简单,对于设计人员而言更加直观。
SIP 如同电子邮件客户机一样重用 MIME 类型描述,因此与会话相关的应用程序可以自动启动。
SIP 重用几个现有的比较成熟的 Internet 服务和协议,如 DNS、RTP、RSVP 等。不必再引入新服务对 SIP 基础设施提供支持,因为该基础设施很多部分已经到位或现成可用。
对 SIP 的扩充易于定义,可由服务提供商在新的应用中添加,不会损坏网络。网络中基于 SIP 的旧设备不会妨碍基于 SIP 的新服务。例如,如果旧 SIP 实施不支持新的 SIP 应用所用的方法/标头,则会将其忽略。
SIP 独立于传输层。因此,底层传输可以是采用 ATM 的 IP。SIP 使用用户数据报协议 (UDP) 以及传输控制协议 (TCP),将独立于底层基础设施的用户灵活地连接起来。
SIP 支持多设备功能调整和协商。如果服务或会话启动了视频和语音,则仍然可以将语音传输到不支持视频的设备,也可以使用其他设备功能,如单向视频流传输功能。
返回页首
SIP 会话构成
SIP 会话使用多达四个主要组件:SIP 用户代理、SIP 注册服务器、SIP 代理服务器和 SIP 重定向服务器。这些系统通过传输包括了 SDP 协议(用于定义消息的内容和特点)的消息来完成 SIP 会话。下面概括性地介绍各个 SIP 组件及其在此过程中的作用。
SIP 用户代理 (UA) 是终端用户设备,如用于创建和管理 SIP 会话的移动电话、多媒体手持设备、PC、PDA 等。用户代理客户机发出消息。用户代理服务器对消息进行响应。
SIP 注册服务器是包含域中所有用户代理的位置的数据库。在 SIP 通信中,这些服务器会检索参与方的 IP 地址和其他相关信息,并将其发送到 SIP 代理服务器。
SIP 代理服务器接受 SIP UA 的会话请求并查询 SIP 注册服务器,获取收件方 UA 的地址信息。然后,它将会话邀请信息直接转发给收件方 UA(如果它位于同一域中)或代理服务器(如果 UA 位于另一域中)。
SIP 重定向服务器允许 SIP 代理服务器将 SIP 会话邀请信息定向到外部域。SIP 重定向服务器可以与 SIP 注册服务器和 SIP 代理服务器同在一个硬件上。
以下几个情景说明 SIP 组件之间如何进行协调以在同一域和不同域中的 UA 之间建立 SIP 会话:
在同一域中建立 SIP 会话
下图说明了在预订同一个 ISP 从而使用同一域的两个用户之间建立 SIP 会话的过程。用户 A 使用 SIP 电话。用户 B 有一台 PC,运行支持语音和视频的软客户程序。加电后,两个用户都在 ISP 网络中的 SIP 代理服务器上注册了他们的空闲情况和 IP 地址。用户 A 发起此呼叫,告诉 SIP 代理服务器要联系用户 B。然后,SIP 代理服务器向 SIP 注册服务器发出请求,要求提供用户 B 的 IP 地址,并收到用户 B 的 IP 地址。SIP 代理服务器转发用户 A 与用户 B 进行通信的邀请信息(使用 SDP),包括用户 A 要使用的媒体。用户 B 通知 SIP 代理服务器可以接受用户 A 的邀请,且已做好接收消息的准备。SIP 代理服务器将此消息传达给用户 A,从而建立 SIP 会话。然后,用户创建一个点到点 RTP 连接,实现用户间的交互通信。
1.呼叫用户 B
2.查询捻没?B 在哪里??br> 3.响应捻没?B 的 SIP 地址?br> 4.挚�顶呼叫
5. 响应
6. 响应
7. 多媒体通道已建立
返回页首
在不同的域中建立 SIP 会话
本情景与第一种情景的不同之处如下。用户 A 邀请正在使用多媒体手持设备的用户 B 进行 SIP 会话时,域 A 中的 SIP 代理服务器辨别出用户 B 不在同一域中。然后,SIP 代理服务器在 SIP 重定向服务器上查询用户 B 的 IP 地址。SIP 重定向服务器既可在域 A 中,也可在域 B 中,也可既在域 A 中又在域 B 中。SIP 重定向服务器将用户 B 的联系信息反馈给 SIP 代理服务器,该服务器再将 SIP 会话邀请信息转发给域 B 中的 SIP 代理服务器。域 B 中的 SIP 代理服务器将用户 A 的邀请信息发送给用户 B。用户 B 再沿邀请信息经由的同一路径转发接受邀请的信息。
1. 呼叫用户 B 2. 询问撑胰绾谓油ㄓ?B 中的用户 B?? 3. 响应挚�砜刂破鞯挠虻刂窋 4. 挚�顶呼叫域 B 的 SIP 代理 5. 查询捻没?B 在哪里?? 6. 用户 B 的地址 7. 代理呼叫 8. 响应 9. 响应 10.响应 11.多媒体通道已建立
无缝、灵活、可扩展:展望 SIP 未来
SIP 能够连接使用任何 IP 网络(有线 LAN 和 WAN、公共 Internet 骨干网、移动 2.5G、3G 和 Wi-Fi)和任何 IP 设备(电话、PC、PDA、移动手持设备)的用户,从而出现了众多利润丰厚的新商机,改进了企业和用户的通信方式。基于 SIP 的应用(如 VOIP、多媒体会议、push-to-talk(按键通话)、定位服务、在线信息和 IM)即使单独使用,也会为服务提供商、ISV、网络设备供应商和开发商提供许多新的商机。不过,SIP 的根本价值在于它能够将这些功能组合起来,形成各种更大规模的无缝通信服务。
使用 SIP,服务提供商及其合作伙伴可以定制和提供基于 SIP 的组合服务,使用户可以在单个通信会话中使用会议、Web 控制、在线信息、IM 等服务。实际上,服务提供商可以创建一个满足多个最终用户需求的灵活应用程序组合,而不是安装和支持依赖于终端设备有限特定功能或类型的单一分散的应用程序。
通过在单一、开放的标准 SIP 应用架构下合并基于 IP 的通信服务,服务提供商可以大大降低为用户设计和部署基于 IP 的新的创新性托管服务的成本。它是 SIP 可扩展性促进本行业和市场发展的强大动力,是我们所有人的希望所在。
㈥ 什么是路由下一跳地址,能解释详细点
路由下一跳地址就是网关的IP地址。网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。这样一来就有以下两种设置方式:
1、手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲。一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。
2、自动设置适用于网络规模较大、TCP/IP参数有可能变动的情况,即利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑就均获得了新的默认网关的IP地址。
(6)tcp网络协议如何找到下一跳扩展阅读
路由下一跳地址的网关性质
1、网关又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。
2、网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。
3、在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。
4、当然与此同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI这个7层协议的顶层——应用层。
㈦ 路由器中的下一跳是什么意思,请针对性讲解下,谢谢.
路由下一跳地址意思就是网关的IP地址。
网关的IP地址是具有路由功能的设备的IP地址。 具有路由功能的设备包括路由器,启用了路由协议的服务器(基本上等同于路由器)和代理服务器(也等同于路由器)。
手动设置适用于计算机数量相对较少且TCP / IP参数基本不变的情况,例如,只有几到十几台计算机。 此方法在连接到网络的每台计算机上都需要一个“默认网关”。 一旦由于迁移等原因必须修改默认网关的IP地址,将给网络管理带来麻烦。
(7)tcp网络协议如何找到下一跳扩展阅读:
路由下一跳地址的网关性质:
1、网关也称为网络连接器,以及协议转换器。 网关实现网络层以上的网络互连,是最复杂的网络互连设备,仅用于具有不同高级协议的两个网络的互连。
2、网关可用于WAN互连和LAN互连。 网关是充当繁重转换任务的计算机系统或设备。
3、网关是使用不同通信协议,数据格式或语言的两个系统,甚至具有完全不同的体系结构的系统之间的转换器。 与仅传递信息的网桥不同,网关必须重新包装接收到的信息,以满足目标系统的需求。
㈧ 关于 Linux 网络,你必须知道这些
我们一起学习了文件系统和磁盘 I/O 的工作原理,以及相应的性能分析和优化方法。接下来,我们将进入下一个重要模块—— Linux 的网络子系统。
由于网络处理的流程最复杂,跟我们前面讲到的进程调度、中断处理、内存管理以及 I/O 等都密不可分,所以,我把网络模块作为最后一个资源模块来讲解。
同 CPU、内存以及 I/O 一样,网络也是 Linux 系统最核心的功能。网络是一种把不同计算机或网络设备连接到一起的技术,它本质上是一种进程间通信方式,特别是跨系统的进程间通信,必须要通过网络才能进行。随着高并发、分布式、云计算、微服务等技术的普及,网络的性能也变得越来越重要。
说到网络,我想你肯定经常提起七层负载均衡、四层负载均衡,或者三层设备、二层设备等等。那么,这里说的二层、三层、四层、七层又都是什么意思呢?
实际上,这些层都来自国际标准化组织制定的开放式系统互联通信参考模型(Open System Interconnection Reference Model),简称为 OSI 网络模型。
但是 OSI 模型还是太复杂了,也没能提供一个可实现的方法。所以,在 Linux 中,我们实际上使用的是另一个更实用的四层模型,即 TCP/IP 网络模型。
TCP/IP 模型,把网络互联的框架分为应用层、传输层、网络层、网络接口层等四层,其中,
为了帮你更形象理解 TCP/IP 与 OSI 模型的关系,我画了一张图,如下所示:
当然了,虽说 Linux 实际按照 TCP/IP 模型,实现了网络协议栈,但在平时的学习交流中,我们习惯上还是用 OSI 七层模型来描述。比如,说到七层和四层负载均衡,对应的分别是 OSI 模型中的应用层和传输层(而它们对应到 TCP/IP 模型中,实际上是四层和三层)。
OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。
有了 TCP/IP 模型后,在进行网络传输时,数据包就会按照协议栈,对上一层发来的数据进行逐层处理;然后封装上该层的协议头,再发送给下一层。
当然,网络包在每一层的处理逻辑,都取决于各层采用的网络协议。比如在应用层,一个提供 REST API 的应用,可以使用 HTTP 协议,把它需要传输的 JSON 数据封装到 HTTP 协议中,然后向下传递给 TCP 层。
而封装做的事情就很简单了,只是在原来的负载前后,增加固定格式的元数据,原始的负载数据并不会被修改。
比如,以通过 TCP 协议通信的网络包为例,通过下面这张图,我们可以看到,应用程序数据在每个层的封装格式。
这些新增的头部和尾部,增加了网络包的大小,但我们都知道,物理链路中并不能传输任意大小的数据包。网络接口配置的最大传输单元(MTU),就规定了最大的 IP 包大小。在我们最常用的以太网中,MTU 默认值是 1500(这也是 Linux 的默认值)。
一旦网络包超过 MTU 的大小,就会在网络层分片,以保证分片后的 IP 包不大于 MTU 值。显然,MTU 越大,需要的分包也就越少,自然,网络吞吐能力就越好。
理解了 TCP/IP 网络模型和网络包的封装原理后,你很容易能想到,Linux 内核中的网络栈,其实也类似于 TCP/IP 的四层结构。如下图所示,就是 Linux 通用 IP 网络栈的示意图:
我们从上到下来看这个网络栈,你可以发现,
这里我简单说一下网卡。网卡是发送和接收网络包的基本设备。在系统启动过程中,网卡通过内核中的网卡驱动程序注册到系统中。而在网络收发过程中,内核通过中断跟网卡进行交互。
再结合前面提到的 Linux 网络栈,可以看出,网络包的处理非常复杂。所以,网卡硬中断只处理最核心的网卡数据读取或发送,而协议栈中的大部分逻辑,都会放到软中断中处理。
我们先来看网络包的接收流程。
当一个网络帧到达网卡后,网卡会通过 DMA 方式,把这个网络包放到收包队列中;然后通过硬中断,告诉中断处理程序已经收到了网络包。
接着,网卡中断处理程序会为网络帧分配内核数据结构(sk_buff),并将其拷贝到 sk_buff 缓冲区中;然后再通过软中断,通知内核收到了新的网络帧。
接下来,内核协议栈从缓冲区中取出网络帧,并通过网络协议栈,从下到上逐层处理这个网络帧。比如,
最后,应用程序就可以使用 Socket 接口,读取到新接收到的数据了。
为了更清晰表示这个流程,我画了一张图,这张图的左半部分表示接收流程,而图中的粉色箭头则表示网络包的处理路径。
了解网络包的接收流程后,就很容易理解网络包的发送流程。网络包的发送流程就是上图的右半部分,很容易发现,网络包的发送方向,正好跟接收方向相反。
首先,应用程序调用 Socket API(比如 sendmsg)发送网络包。
由于这是一个系统调用,所以会陷入到内核态的套接字层中。套接字层会把数据包放到 Socket 发送缓冲区中。
接下来,网络协议栈从 Socket 发送缓冲区中,取出数据包;再按照 TCP/IP 栈,从上到下逐层处理。比如,传输层和网络层,分别为其增加 TCP 头和 IP 头,执行路由查找确认下一跳的 IP,并按照 MTU 大小进行分片。
分片后的网络包,再送到网络接口层,进行物理地址寻址,以找到下一跳的 MAC 地址。然后添加帧头和帧尾,放到发包队列中。这一切完成后,会有软中断通知驱动程序:发包队列中有新的网络帧需要发送。
最后,驱动程序通过 DMA ,从发包队列中读出网络帧,并通过物理网卡把它发送出去。
多台服务器通过网卡、交换机、路由器等网络设备连接到一起,构成了相互连接的网络。由于网络设备的异构性和网络协议的复杂性,国际标准化组织定义了一个七层的 OSI 网络模型,但是这个模型过于复杂,实际工作中的事实标准,是更为实用的 TCP/IP 模型。
TCP/IP 模型,把网络互联的框架,分为应用层、传输层、网络层、网络接口层等四层,这也是 Linux 网络栈最核心的构成部分。
我结合网络上查阅的资料和文章中的内容,总结了下网卡收发报文的过程,不知道是否正确:
当发送数据包时,与上述相反。链路层将数据包封装完毕后,放入网卡的DMA缓冲区,并调用系统硬中断,通知网卡从缓冲区读取并发送数据。
了解 Linux 网络的基本原理和收发流程后,你肯定迫不及待想知道,如何去观察网络的性能情况。具体而言,哪些指标可以用来衡量 Linux 的网络性能呢?
实际上,我们通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络的性能。
除了这些指标,网络的可用性(网络能否正常通信)、并发连接数(TCP 连接数量)、丢包率(丢包百分比)、重传率(重新传输的网络包比例)等也是常用的性能指标。
分析网络问题的第一步,通常是查看网络接口的配置和状态。你可以使用 ifconfig 或者 ip 命令,来查看网络的配置。我个人更推荐使用 ip 工具,因为它提供了更丰富的功能和更易用的接口。
以网络接口 eth0 为例,你可以运行下面的两个命令,查看它的配置和状态:
你可以看到,ifconfig 和 ip 命令输出的指标基本相同,只是显示格式略微不同。比如,它们都包括了网络接口的状态标志、MTU 大小、IP、子网、MAC 地址以及网络包收发的统计信息。
第一,网络接口的状态标志。ifconfig 输出中的 RUNNING ,或 ip 输出中的 LOWER_UP ,都表示物理网络是连通的,即网卡已经连接到了交换机或者路由器中。如果你看不到它们,通常表示网线被拔掉了。
第二,MTU 的大小。MTU 默认大小是 1500,根据网络架构的不同(比如是否使用了 VXLAN 等叠加网络),你可能需要调大或者调小 MTU 的数值。
第三,网络接口的 IP 地址、子网以及 MAC 地址。这些都是保障网络功能正常工作所必需的,你需要确保配置正确。
第四,网络收发的字节数、包数、错误数以及丢包情况,特别是 TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,通常表示出现了网络 I/O 问题。其中:
ifconfig 和 ip 只显示了网络接口收发数据包的统计信息,但在实际的性能问题中,网络协议栈中的统计信息,我们也必须关注。你可以用 netstat 或者 ss ,来查看套接字、网络栈、网络接口以及路由表的信息。
我个人更推荐,使用 ss 来查询网络的连接信息,因为它比 netstat 提供了更好的性能(速度更快)。
比如,你可以执行下面的命令,查询套接字信息:
netstat 和 ss 的输出也是类似的,都展示了套接字的状态、接收队列、发送队列、本地地址、远端地址、进程 PID 和进程名称等。
其中,接收队列(Recv-Q)和发送队列(Send-Q)需要你特别关注,它们通常应该是 0。当你发现它们不是 0 时,说明有网络包的堆积发生。当然还要注意,在不同套接字状态下,它们的含义不同。
当套接字处于连接状态(Established)时,
当套接字处于监听状态(Listening)时,
所谓全连接,是指服务器收到了客户端的 ACK,完成了 TCP 三次握手,然后就会把这个连接挪到全连接队列中。这些全连接中的套接字,还需要被 accept() 系统调用取走,服务器才可以开始真正处理客户端的请求。
与全连接队列相对应的,还有一个半连接队列。所谓半连接是指还没有完成 TCP 三次握手的连接,连接只进行了一半。服务器收到了客户端的 SYN 包后,就会把这个连接放到半连接队列中,然后再向客户端发送 SYN+ACK 包。
类似的,使用 netstat 或 ss ,也可以查看协议栈的信息:
这些协议栈的统计信息都很直观。ss 只显示已经连接、关闭、孤儿套接字等简要统计,而 netstat 则提供的是更详细的网络协议栈信息。
比如,上面 netstat 的输出示例,就展示了 TCP 协议的主动连接、被动连接、失败重试、发送和接收的分段数量等各种信息。
接下来,我们再来看看,如何查看系统当前的网络吞吐量和 PPS。在这里,我推荐使用我们的老朋友 sar,在前面的 CPU、内存和 I/O 模块中,我们已经多次用到它。
给 sar 增加 -n 参数就可以查看网络的统计信息,比如网络接口(DEV)、网络接口错误(EDEV)、TCP、UDP、ICMP 等等。执行下面的命令,你就可以得到网络接口统计信息:
这儿输出的指标比较多,我来简单解释下它们的含义。
其中,Bandwidth 可以用 ethtool 来查询,它的单位通常是 Gb/s 或者 Mb/s,不过注意这里小写字母 b ,表示比特而不是字节。我们通常提到的千兆网卡、万兆网卡等,单位也都是比特。如下你可以看到,我的 eth0 网卡就是一个千兆网卡:
其中,Bandwidth 可以用 ethtool 来查询,它的单位通常是 Gb/s 或者 Mb/s,不过注意这里小写字母 b ,表示比特而不是字节。我们通常提到的千兆网卡、万兆网卡等,单位也都是比特。如下你可以看到,我的 eth0 网卡就是一个千兆网卡:
我们通常使用带宽、吞吐量、延时等指标,来衡量网络的性能;相应的,你可以用 ifconfig、netstat、ss、sar、ping 等工具,来查看这些网络的性能指标。
小狗同学问到: 老师,您好 ss —lntp 这个 当session处于listening中 rec-q 确定是 syn的backlog吗?
A: Recv-Q为全连接队列当前使用了多少。 中文资料里这个问题讲得最明白的文章: https://mp.weixin.qq.com/s/yH3PzGEFopbpA-jw4MythQ
看了源码发现,这个地方讲的有问题.关于ss输出中listen状态套接字的Recv-Q表示全连接队列当前使用了多少,也就是全连接队列的当前长度,而Send-Q表示全连接队列的最大长度
㈨ 大神请问个问题:计算机网络:发送端的网络层怎么获取目的ip,源ip的
发送端本来就知道目标IP,IP包从主机发出的时候就带有目标地址信息。比如ping,当你ping某个地址的时候目标地址就已经指定。(1)如果目标地址在同网段内,主机会查找ARP表(IP与MAC地址对应关系,如果找不到就会广播通过交换机制找到),直接将报文送达目标IP;(2)如果目标地址不在同网段内,主机会查找路由表,并进一步找到“下一跳”的IP地址,然后重复1的过程将IP包交给下一跳地址,下一跳行使路由功能,重复2的过程,知道IP包送达目标地址。最后目标地址主机层层解封读取数据。
所以不管是目标IP还是源IP,这些信息不是IP包的负载“数据”提供的,而是应用软件通过操作系统提供的,就像你寄出一封信,信封上的地址不一定要写在信件内容上,信也一样可以寄到。
㈩ TCP/IP协议栈简介
互联网由一整套协议构成,自上而下而下可以分为如下4层:
IP协议定义了一套自己的地址规则,称为IP地址。它实现了路由功能,允许某个局域网的A主机向另一个局域网的B主机发送信息。
IP地址包含网络号和主机号,IPv4协议规定的IP地址由32位二进制数组成,每8位一段,用十进制表示每段地址,可以表示的范围为0.0.0.0~255.255.255.255。IPv6协议规定的IP地址由128位二进制数组成,可以表示更多的网络与主机,目前IPv4能够表示的IP地址即将使用殆尽,不久的将来会被IPv6取代。
路由是把数据从源地址经过网络传输到目标地址的过程,它包括2个主要动作:选择路径、数据传输。
路由器(Router)是一种负责寻径的网络设备,它通过路由表为数据传输选择最佳路径。路由表包含网络地址以及各地址之间距离的清单,路由器使用最少时间算法或最优路径算法来调整信息传递的路径。
路由表可以静态指定,也可以动态学习(基于rip2, ospf等协议)。路由表中的路由条目描述了目标地址、下一跳(nexthop)。目标地址可以分为主机路由、网络路由、默认路由(0.0.0.0/0.0.0.0),主机路由表示局域网中的主机,网络路由表示不同的局域网。
网关(Gateway)就是一个网络连接到另一个网络的“关口”,它负责不同网络之间的通信。TCP/IP协议里的网关是其中的一种,实质上是一个网络通向其他网络的IP地址,此IP地址上的设备必须具有路由功能,这些设备有:路由器、启用路由协议的服务器、代理服务器。
比如如果网络A(192.168.1.0)中的主机向网络B(192.168.2.0)中的主机发送数据,因为两个主机不在同一网络,所以数据包会被转发给A的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B中的主机。