阅读 266

网络基础——TCP/IP协议

       从字面意义上讲,有人可能会认为TCP/IP是指TCP与IP两种协议。在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP、TCP或UDP、TELNET或FITP、以及HTTP等都属于TCP/IP的协议。它们与TCP或IP的关系紧密,是互联网必不可少的组成部分。TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议族”。

TCP/IP基础

TCP/IP分层模型

        TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。     

       协议分层就如同计算机软件中的模块化开发。分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统。

  • 优点:可以构造一个扩展性和灵活性都较强的系统。通过分层能够细分通信功能,更易于单独实现每个分层的协议
  • 缺点:过分模块化、使处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑等问题。

物理层

         TCP/IP的最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线路等物理层的设备。

数据链路层

       链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

网络层

      网络层的主要工作是定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。

  • IP协议:是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。 IP还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能够实现通信。 虽然IP也是分组交换的一种协议,但是它不具有重发机制。即使分组数据包未能到达对端主机也不会重发。因此,属于非可靠性传输协议。 
  • ICMP协议:IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发 送端发送一个发生异常的通知。ICMP就是为这一功能而制定的。它有时也被用来诊断网络的健康状况。 
  • ARP协议:从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。

传输层

      传输层的主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。

  • TCP协议:是一种面向有连接的传输层协议。它可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外,TCP还能够有效利用带宽,缓解网络拥堵。 然而,为了建立与断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。此外,为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。 
  • UDP协议:UDP有别于TCP,它是一种面向无连接的传输层协议。UDP不会关注对端是否真的收到了传送过去的数据,如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。 UDP常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

应用层

      为了实现某种应用而设计和创造的协议。例如电子邮件协议SMTP协议,Web浏览器使用的HTTP协议以及文件传输FTP协议等等。

TCP/IP通信示例

       每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标 地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。

发送数据包

假设甲给乙发送电子邮件,内容为:“早上好”。而从TCP/IP通信上看,是从一台计算机A向另一台计算机B发送电子邮件。

①应用程序处理:应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数 据发送给下一层的TCP,再做实际的转发处理。

②TCP模块的处理:TCP负责建立连接、发送数据以及断开连接。TCP首部中包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)等等。随后将附加了TCP首部的包再发送给IP。

IP模块的处理:IP数据包中IP首部后面紧跟着TCP首部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。如果尚不知道接收端的MAC地址,可以利用ARP查找。只要知道了对端 的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。

④网络接口的处理:从IP传过来的IP包,给这数据附加上以太网首部并进行发送处理。 以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。根据上述信息产生的以太网数据包将通过物理层传输给接收端。

包流动时,从前往后依此被附加了以太网包首部、IP包首部、TCP包首部(或者UDP包首部)以及应用自己的包首部和数据。每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。

经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/UDP则会用端口号作为识别两端主机的地址。

接收数据包

包的接收流程是发送流程的逆序过程。

⑤ 网络接口的处理:主机收到以太网包以后,首先从以太网的包首部找到MAC地址判断是否为发给自己的包。如果不是发给自己的包则丢弃数据 。 而如果接收到了恰好是发给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。在这个例子中数据类型显然是IP包,因此再将数据传给处理IP的子程序,如果这时不是IP而是其他诸如ARP的协议,就把数据传给ARP处理。如果以太网包首部的类型域包含了一个无法识别的协议类型,则丢弃数据。

⑥ IP模块的处理: IP模块收到IP包首部及后面的数据部分以后,取出首部中的IP地址与自己的IP地址匹配,一致的话则接收数据并从中查找上一层的协议。如果上一层是TCP就将IP包首部之后的部分传给TCP处理;如果是UDP则将IP包首部后面的部分传给UDP处理。对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据。

⑦ TCP模块的处理: 在TCP模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。 数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。 数据被完整地接收以后,会传给由端口号识别的应用程序。 

⑧ 应用程序的处理: 接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件的收件人地址是乙的地址。 用户乙就可以利用主机B上的邮件客户端,接收并阅读由主机A上的用户甲所发送过来的电子邮件——“早上好”。

数据链路

         数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。通信媒介包括双绞线电缆、同轴电缆、光纤、电波以及红外线等介质。此外,各个设备之间有时也会通过交换机、网桥、中继器等中转数据。 实际上,各个设备之间在数据传输时,数据链路层和物理层都是必不可少的。计算机以二进制0、1来表示信息,然而实际的通信媒介之间处理的却是电压的高低、光的闪灭以及电波的强弱等信号。把这些信号与二进制的0、1进行转换正是物理层的责任。

MAC地址

        MAC地址用于识别数据链路中互连的节点。MAC地址长48比特,MAC地址中3~24位(比特位)表示厂商识别码,每个NIC厂商都有特定唯一的识别数字。25~48位是 厂商内部为识别每个网卡而用。在使用网卡(NIC)的情况下,MAC地址一般会被烧入到ROM 中。任何一个网卡的MAC地址都是唯一的,在全世界都不会有重复。

以太网

在众多数据链路中最为著名、使用最为广泛的莫过于以太网(Ethernet)。它的规范简单,易于NIC(网卡)及驱动程序实现。现在,以太网已成为最具兼容性与未来发展性的一种数据链路。

一般都采用终端与交换机之间独占电缆的方式实现以太网通信

以太网帧本体的前端是以太网的首部,它总共占14个字节。分别是6个字节的目标MAC地址、6个字 的源MAC地址以及2个字节的上层协议类型。

紧随帧头后面的是数据。一个数据帧所能容纳的最大数据范围是46~1500个字节。帧尾是一个叫做 FCS(Frame Check Sequence,帧检验序列)的4个字节。

在目标MAC地址中存放了目标工作站的物理地址。源MAC地址中则存放构造以太网帧的发送端工作站的物理地址。

帧尾最后出现的是FCS(Frame Check Sequence) 。用它可以检查帧是否有所损坏。在通信传输过程中 如果出现电子噪声的干扰,可能会影响发送数据导致乱码位的出现。因此,通过检查这个FCS字段的值可以将那些受到噪声干扰的错误帧丢弃。

无线通信

        无线通信通常使用电磁波、红外线、激光等方式进行传播数据。一般在办公室的局域网范围内组成的较高速的连接称为无线局域网。 无线通信不需要网线或其他可见电缆。

IP协议

       IP(Internet Protocol,网际协议)。IP作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机。因此,IP能够让世界上任何两台计算机之间进行通信。

IP地址

       在计算机通信中,为了识别通信对端,必须要有一个类似于地址的识别码进行标识。MAC地址正是用来标识同一个链路中不同计算机的一种识别码。

        在用TCP/IP通信时,用IP地址识别主机和路由器。为了保证正常通信,有必要为每个设备配置正确的IP地址。在互联网通信中,全世界都必须设定正确的IP地址。 因此,IP地址就像是TCP/IP通信的一块基石。

       IP地址(IPv4地址)由32位正整数来表示。在计算机内部以二进制方式被处理。由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组, 分成4组,每组以“.”隔开,再将每组数转换为十进制数 。

将表示成IP地址的数字整体计算:

       从这个计算结果可知,最多可以允许43亿台计算机连接到网络。实际上,IP地址并非是根据主机台数来配置的,而是每一台主机上的每一块网卡(NIC)都得设置IP地址 。通常一块网卡只设置一个 IP地址,其实一块网卡也可以配置多个IP地址。

路由控制

       发送数据包时所使用的地址是网络层的地址,即IP地址。然而仅仅有IP地址还不足以实现将数据包发送到对端目标地址。路由控制(Routing)是指将分组数据发送到最终目标地址的功能。为了将数据包发给目标主机,所有主机都维护着一张路由控制表(Routing Table)。该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。

IP地址的网络地址部分用于进行路由控制。

路由控制表中记录着网络地址与下一步应该发送至路由器的地址(win10 使用route print 命令) 。在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。

IP分片处理

       不同数据链路有个最大的区别,就是它们各自的最大传输单位(MTU:Maximum Transmission Unit)不同。MTU的值在以太网中是1500字节 。IP的上一层可能会要求传送比这些MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。

       IP分片处理(IP Fragmentation) 是指将较大的IP包分成多个较小的IP包 。分片的包到了对端目标地址以后会再被组合起来传给上一层。

经过分片之后的IP数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。

路径MTU发现

     分片机制也有它的不足。会导致路由器的处理负荷加重。其次,在分片处理中,一旦某个分片丢失,则会造成整个IP数据报作废。

为了应对以上问题,产生了一种新的技术“路径MTU发现”。是指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。即路径中存在的所有数据链路中最小的MTU。而路径MTU发现从发送主机按照路径MTU的大小将数据报分片后进行发送。进行路径MTU发现,就可以避免在中途的路由器上进行分片处理,也可以在TCP中发送更大的包。现在,很多操作系统都已经实现了路径MTU发现的功能。

路径MTU发现的工作原理如下:

首先在发送端主机发送IP数据报时将其首部的分片禁止标志位设置为1。根据这个标志位,途中的路由器即使遇到需要分片才能处理的大包,也不会去分片,而是将包丢弃。

随后,通过一个ICMP的不可达消息将数据链路上MTU的值给发送主机。

发送主机根据这个MTU对数据报进行分片处理。

IPv6

       IPv6(IP version 6)是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4的地址长度为4个8位字节,即32比特。而IPv6的地址长度则是原来的4倍,即128比特,一般写成8个16位字节。它所能表示的数字高达38位数是天文数字, 足以为所有主机和路由器分配地址。

用十六进制数表示:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210

       IPv6的分片处理只在作为起点的发送端主机上进行,路由器不参与分片。这也是为了减少路由器的负荷,提高网速。因此,IPv6中的“路径MTU发现”功能必不可少。不过IPv6中最小MTU为1280字节。因此, 在嵌入式系统中对于那些有一定系统资源限制(CPU处理能力或内存限制等。) 的设备来说,不需要进行“路径MTU发现”,而是在发送IP包时直接以1280字节为单位分片送出。

IPv4首部

        IP进行通信时,需要在数据的前面加入IP首部信息。IP首部中包含着用于IP协议进行发包控制时所有的必要信息。

  • 版本

由4比特构成,表示标识IP首部的版本号。值是“4”。

  • 首部长度(IHL:Internet Header Length)

由4比特构成,表明IP首部的大小,单位为4字节(32比特)。对于没有可选项的IP包,首部长度则设置 为“5”。也就是说,当没有可选项时,IP首部的长度为20字节(4×5=20)。

  • 区分服务(TOS:Type Of Service)

由8比特构成,用来表明服务质量。

  • DSCP段与ECN段

DSCP(Differential Services Codepoint,差分服务代码点)是TOS(Type Of Service)的一部分。用来进行质量控制;ECN(Explicit Congestion Notification,显式拥塞通告)用来报告网络拥堵情况,由两个比特构成。

  • 总长度(Total Length)

表示IP首部与数据部分合起来的总字节数。该字段长16比特。IP包的最大长度为65535字节。

  • 标识(ID:Identification)

由16比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。

  • 标志(Flags)

由3比特构成,表示包被分片的相关信息。

  • 片偏移(FO:Fragment Offset)

由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。

  • 生存时间(TTL:Time To Live)

由8比特构成,指可以中转多少个路由器的(最多256个),避免IP包在网络内无限传递的问题。

  • 协议(Protocol)

由8比特构成,表示IP首部的下一个首部隶属于哪个协议。

  • 首部校验和(Header Checksum)

由16比特(2个字节)构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。

  • 源地址(Source Address)

由32比特(4个字节)构成,表示发送端IP地址。

  • 目标地址(Destination Address)

由32比特(4个字节)构成,表示接收端IP地址。

  • 填充(Padding)

有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0, 调整为32比特的整数倍。

  • 数据(Data)

存入数据。将IP上层协议的首部也作为数据进行处理。

IPv6首部

  • 版本(Version)

与IPv4一样,由4比特构成。IPv6其版本号为6,因此在这个字段上的值为“6”。

  • 通信量类(Traffic Class)

相当于IPv4的TOS(Type Of Service)字段,也由8比特构成。

  • 流标号(Flow Label)

由20比特构成,准备用于服务质量(QoS:Quality Of Service) 控制。

  • 有效载荷长度(Payload Length)

有效载荷是指包的数据部分。IPv4的TL(Total Length)是指包括首部在内的所有长度。然而IPv6中的这个Playload Length不包括首部,只表示数据部分的长度。

  • 下一个首部(Next Header)

相当于IPv4中的协议字段。由8比特构成。通常表示IP的上一层协议是TCP或UDP。

  • 跳数限制(Hop Limit) 

由8比特构成。与IPv4中的TTL意思相同。数据每经过一次路由器就减1,减到0则丢弃数据。

  • 源地址(Source Address)

由128比特(8个16位字节)构成。表示发送端IP地址。

  • 目标地址(Destination Address)

由128比特(8个16位字节)构成。表示接收端IP地址。

IP协议相关技术

DNS

        在应用中,当用户输入主机名(域名)时,DNS会自动检索那个注册了主机名和IP地址的数据库,并迅速定位对应的IP地址。DNS是一种通过主机名检索IP地址的系统管理主机名跟IP地址之间的映射关系。

ARP

        ARP(Address Resolution Protocol) 是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用于IPv6。

ARP又是如何知道MAC地址的呢?

假定主机A向同一链路上的主机B发送IP包,主机A的IP地址为172.20.1.1,主机B的IP地址为172.20.1.2,它们互不知道对方的MAC地址。

主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包。ARP请求包中已经包含了主机B的IP地址172.20.1.2。由于广播的包可以 被同一个链路上所有的主机或路由器接收,因此ARP的请求包也就会被这同一个链路上所有的主机和路由器进行解析。如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机A。

只要知道了IP地址,即使不做ARP,只要在数据链路上做一个广播不就能发给主机B了吗?”那么,为什么既需要IP地址又需要 MAC地址呢?

主机A想要发送IP数据报给主机B时必须得经过路由器C。即使知道了主机B的MAC地址,由于路由器C会隔断两个网络,还是无法实现直接从主机A发送数据报给主机B。此时,主机A必须得先将数据报发送给路由器C的MAC地址C1。

在以太网上发送IP包时,“下次要经由哪个路由器发送数据报”这一信息非常重要。而这里的“下一个路 由器”就是相应的MAC地址。IP地址和MAC地址两者缺一不可。于是就有将这两个地址相关联的ARP协议。

如果不使用IP地址,而是通过MAC地址连接世界上所有网络中所有的主机和节点的情况。仅仅凭一个MAC地址,人们是无法知道这台机器所处的位置的。而且如果全世界的设备都使用MAC地址相连,得向全世界发送包。造成大的网络流量。

RARP

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

ICMP

        ICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。

DHCP

         实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP(Dynamic Host Configuration Protocol)协议。有了DHCP,计算机只要连接到网络,就可以进行TCP/IP通信。

DHCP在分配IP地址有两种方法。一种是由DHCP服务器在特定的IP地址中自动选出一个进行分 配。另一种方法是针对MAC地址分配一个固定的IP地址。而且这两种方法可以并用。

传输层协议

       TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP 则常被用于让广播和细节控制交给应用的通信传输。

TCP

       TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管道中的水流。TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。

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

确认应答ACK

当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答ACK(Positive Acknowled-gement)意指已经接收 。通过肯定的确认应答(ACK)实现可靠的数据传输。当发送端将数据发出之后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大。在一定时间内没有等到确认应答,发送端就可以认为数据已经丢失,并进行重发。

重发控制

        重发控制以及重复控制等功能都可以通过序列号实现。序列号是按顺序给发送数据的每一个字节(8位字节)都标上号码的编号 。接收端查询接收数据TCP首部中的序列号和数据的长度, 将自己下一步应该接收的序号作为确认应答返送回去。

连接管理

TCP提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。

一个TCP的建立与断开,正常过程至少需要来回发送7个包才能完成(这个过程也称作“三次握手”,"四次挥手"。) 

 UDP

        UDP是不具有可靠性的数据报协议。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。

      UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。

由于UDP面向无连接,可以随时发送数据。处理既简单又高效,经常用于以下几个方面:

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

UDP首部的格式

  • 源端口号(Source Port) 

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

  • 目标端口号(Destination Port) 

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

  • 包长度(Length)

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

  • 校验和(Checksum) 

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

TCP首部格式

TCP中没有表示包长度和数据长度的字段。可由IP层获知TCP的包长由TCP的包长可知数据的长 度。

  • 源端口号(Source Port) 

表示发送端端口号,字段长16位。

  • 目标端口号(Destination Port)

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

  • 序列号(Sequence Number)

 字段长32位。序列号是指发送数据的位置

  • 确认应答号(Acknowledgement Number)

 确认应答号字段长度32位。是指下一次应该收到的数据的序列号。

  • 数据偏移(Data Offset)

表示TCP所传输的数据部分应该从TCP包的哪个位开始计算,该字段长4位,单位为4字节。

  • 保留(Reserved)

该字段主要是为了以后扩展时使用,其长度为4位。

  • 控制位(Control Flag)

字段长为8位,每一位从左至右分别为CWR、ECE、URG、ACK、PSH、RST、SYN、FIN。这些控制标志也叫做控制位。

  • 窗口大小(Window Size)

该字段长为16位。用于通知从相同TCP首部的确认应答号所指位置开始能够接收的数据大小(8位字节)。TCP不允许发送超过此处所示大小的数据。如果窗口为0,则表示可以发送窗口探测,以了解最新的窗口大小。但这个数据必须是1个字节。

  • 校验和(Checksum)

TCP的校验和与UDP相似,区别在于TCP的校验和无法关闭。

  • 紧急指针(Urgent Pointer)

该字段长为16位。只有在URG控制位为1时有效。

  • 选项(Options)

选项字段用于提高TCP的传输性能。因为根据数据偏移(首部长度)进行控制,所以其长度最大为40字节。

应用协议

       利用网络的应用程序有很多,包括Web 浏览器、电子邮件、远程登录、文件传输、网络管理等。能够 让这些应用进行特定通信处理的正是应用协议。 TCP和IP等下层协议是不依赖于上层应用类型、适用性非常广的协议。而应用协议则是为了实现某种应用而设计和创造的协议。

远程登录

TELNET

        TELNET利用TCP的一条连接,通过这一条连接向主机发送文字命令并在主机上执行。本地用户好像直接与远端主机内部的Shell相连着似的,直接在本地进行操作。TELNET经常用于登录路由器或高性能交换机等网络设备进行相应的设置

SSH

        SSH是加密的远程登录系统。TELNET中登录时无需输入密码就可以发送,容易造成通信窃听和非法入 侵的危险。使用SSH后可以加密通信内容。即使信息被窃听也无法破解所发送的密码、具体命令以及命令返 回的结果是什么。

文件传输

     FTP是在两个相连的计算机之间进行文件传输时使用的协议。它使用两条TCP连接:一条用来控制,另一条用于数据(文件)的传输。

       控制的TCP连接主要在FTP的控制部分使用。例如登录用户名和密码的验证、发送文件的名称、发送方式的设置。

电子邮件

SMTP协议

       提供电子邮件服务的协议叫做SMTP(Simple Mail Transfer Protocol)。SMTP为了实现高效发送邮件内 容,在其传输层使用了TCP协议。SMTP建立一个TCP连接以后,在这个连接 上进行控制和应答以及数据的发送。

POP协议

        该协议是一种用于接收电子邮件的协议。发送端的邮件根据SMTP协议将被转发给一直处于插电状态的POP服务器。客户端再根据POP协议从POP服务器 接收对方发来的邮件。

IMAP协议

       IMAP(Internet Message Access Protocol) 与POP类似,也是接收电子邮件的协议。在POP中邮件 由客户端进行管理,而在IMAP中邮件则由服务器进行管理。使用IMAP时,可以不必从服务器上下载所有的邮件也可以阅读。

TCP/IP 协议是互联网的基石

参考

图解TCP/IP
百度百科TCP/IP协议

文章分类
后端
文章标签