《图解TCP/IP》学习笔记

协议基础

协议就是计算机之间通过网络实现通信时实现所达成的一种“约定”,这种约定使得那些由不同厂商的设备,不同的CPU以及不同的操作系统组成的计算机之间实现通信。

分组交换协议

分组交换协议是指将大的数据分割为一个个叫做包(packet)的较小单位进行传输的方法。

协议分层与OSI参考模型

OSI模型一共有七层,每个分层都接受由它下一层所提供的特定服务,并且负责为自己的上层所提供特定的服务,OSI的七层模型如下图。



  各个层的作用



  OSI参考模型通信处理举例

在每个分层上,在处理上一层穿过来的数据时可以附加上当前协议层所必需的的首部信息.然后接收端对收到的数据进行首部内容的分离,再转发给上一层,并最终将发送端的数据恢复为原状.

在上述通信实例中,数据链路层和传输层的工作示意图如下:


  • 数据链路层负责实现每一个区间的通信;
  • 传输层负责将实现网络间的通信;

通信传输实际上是通过物理的传输介质实现的,数据链路层的作用就是在这些通过传输介质相互连接的设备之间进行数据处理,相互连接的设备之间使用MAC地址传输,此地址也被称为硬件地址。

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

传输方式分类

面向有连接型与面向无连接型

面向有连接型:在发送数据之前,需要在首发主机之间连接一条通信线路。
  面向无连接型:在发送数据之前,不要求建立和断开连接,发送端可于任何时候自由发送数据,反之接受端永远也不知道自己会在何时从哪里接收数据。

根据接收数量分类

1.单播:一对一通信,像固定电话。
2.广播:将消息从1台主机发送给与之相连的所有其他主机,像电视播放,它将电视信号一起发送给特定的多个接受对象。
3.多播:多播与广播类似,也是将消息发送给多个接收主机,不同之处在于多播要先定某一组主机作为接受端,像电视会议,会有一台主机发送消息给特定的多台主机。
4.任播:指在特定的多台主机中挑选一台作为接受端的一种通信方式。
示意图如下:


TCP/IP基础

TCP/IP的发展历程

互联网基础

互联网的定义

互联网:将两个以太网网段用路由器相连是互联网,将企业内部各部门的网络或公司的内网与其它企业相连接,并实现相互通信的网络也是互联网。

互联网与TCP/IP的关系

互联网进行通信时需要相应的网络协议,TCP/IP就是为使用互联网而开发制定的协议。

TCP/IP分层模型

TCP/IP与OSI参考模型

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

硬件(物理层)

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

网络接口层(数据链路层)

网络接口层利用以太网中的数据链路层进行通讯,因此属于接口层。

互联网层(网络层)

互联网层使用IP协议,IP协议基于IP地址转发分包数据。

  • TCP/IP分层总的互联网层传输层的功能通常是由操作系统提供,尤其是路由器,它必须得实现通过互联网层转发分组数据包的功能。
  • 连接互联网的路由器主机都必须实现IP功能,其它与互联网相连接的网络设备(网桥,中继器或集线器)就没必要一定实现TCP/IP功能。
  • IP是跨越网络传送数据包,使整个互联网都能收到数据的协议,这期间它使用IP地址作为主机的标识。
  • ICMP:IP协议不具有重发机制,IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个异常的通知。ICMP就是为这一功能定制的。

传输层

传输层的主要功能就是能够让应用程序间进行通信,识别这些不同程序的是端口号,传输层主要有以下两个协议TCP和UDP。

  • TCP是一种面向有连接的协议,它可以保证两端通信主机之间的通信可达,但是为了建立与断开连接,它需要至少7次以上的发包与收包,导致网络流量的浪费。
  • UDP是一种面向无连接的传输层协议,因此UDP常用语分组较少的多播,广播通信以及视频通信等多媒体领域。

应用层(会话层以上的分层)

应用层只要包含www协议,FTP,IMAP等协议。

TCP/IP分层模型与通信实例

数据包首部

每个分层中,都会地所发送的数据添加一个首部,该首部包含了该层的必要信息,如发送目标地址以及协议等相关协议信息。


发送数据包

TCP/IP各层对邮件收发的处理


经过数据链路层的包

每个包首部中至少包含两个信息:1.发送端和接受的地址;2.上一层的协议类型。

以太网用MAC地址,IP使用IP地址,TCP/UDP则使用端口号(port)

在TCP模块中,收到数据首先会计算一下校验和,判断数据是否被毁。然后检查是否在按照序号接收数据,最后检查端口号,去的定具体的应用程序。

数据链路层

数据链路层的作用

数据链路层协议定义了通过通信介质互联的设备之间传输的规范。把0,1序列转换成的电压的高低,光的闪灭,以及点播的强弱等信号是物理层的功能,数据链路层处理的数据也不是单纯的0,1序列,该层把他们集合为一个叫的块,然后再进行传输。

MAC地址

MAC地址用于识别数据链路层中互连的节点,MAC地址长48比特,全世界都没有相同的MAC地址。

IP协议

IP网际协议

TCP/IP的心脏是互联网层,这一层主要有IP(Internet Protocol)和ICMP(Internet Control Message Protocol)两个协议组成。

IP的作用

网络层的主要作用是实现终端节点之间的通信,这种终端节点之间的通信也叫点对点(end-to-ed)

数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递,而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使在不同的数据链路上也能实现两端点之间的数据包传递。

网络层与数据链路层的区别

数据链路层提供直连的两个设备之间的通信,与此相比,作为网络层的IP则负责在没有直连的两个网络之间的通信,两者的功能如下图:

IP基础

IP大致分为三大模块作用,他们是:

  • IP寻址
  • 路由控制
  • IP的分包与组包

IP寻址

在计算机通信中,为了识别通信的对端,必须要有一个类似于地址的识别码进行标识,IP就属于这种地址的标识码,IP用于在连接到网络中所有主机识别出通信的目标地址,因此,在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。

路由控制

路由控制是指将分组数据发送到最终的目标地址的功能,即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路
  Hop翻译为中文为“跳”,它指网络中的一个区间,IP包正是在网络中的一个个跳区间被转发,因此IP路由也叫做多跳路由,在每一个区间内决定着包在下一跳被转发的路径。

多跳路由是指在路由器或主机在转发IP数据包时只指定下一个路由或主机,而不是将最终目标地址为止的所有通路全部指定出来。因为每一个区间在转发IP数据包时会指定下一级跳的操作,直到包到达最终的目标地址。
  为了将数据发送给目标主机,所有主机都维护着一张路由控制表,该表记录着IP数据在下一步应该发给哪个路由器,IP数据包根据这个路由表在各个数据链路上传递。


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

IP分包与分组(对数据链路层的抽象)

IP实现多个数据链路层之间的通信,数据链路层根据种类的不同各有特点,不同数据链路最大的区别是,就是他们各自的最大传输单位(MTU)不同,为了解决这个问题,IP进行分片处理,将较大的IP包分成较小的IP包,分片的包到达了对端目标地址以后组合起来传给上一层,IP就是以这种方式抽象化了数据链路层。
  IP采用面向无连接的原因:

  • 为了简化:面向连接比起面向无连接复杂很多;
  • 为了提速:面向连接每次通信都会建立连接,导致速度很慢;
  • 需要面向有连接时,可以委托网络层的上一层传输层提供面向有连接。
  • 经过分片之后的IP数据包在被重组的时候,只能有目标主机进行,虽然路由器虽然对分片做处理,但不负责重组。

IP地址基础知识

IP地址的定义

IP地址(Ipv4)由32位正整数来表示,为了方便记忆,每八位为一组,中间以.分隔,再将每组转化成十进制数。

实际上,IP地址并非根据主机台数来配置的,而是每一台主机上的网卡都得设置IP。

IP的组成

IP地址由网络标识(网络地址)主机标识(主机地址)两部分组成。

  • 网络标识在数据链路的每个端配置不同的值,网络标识必须保证相互连接的每个段地址不相重复。而相同段内相连的主机必须具有相同的网路地址。
  • 主机标识用于区分同一网段内的不同主机,不允许在同一个网段内重复出现。

IP包被转发到途中某个路由器时,正是利用目标IP地址的网络标识进行路由的。

IP地址的分类

IP地址分为A,BC,D类,它根据IP地址中从第一位到第四位的比特列对其网络标识和主机进行区分。

  • A类地址
      A类IP是以首位以“0”开头的地址,从第一位到第八位是它的网络标识,A类地址的后24位为主机地址
      范围:0.0.0.0 ~ 127.0.0.0
    -B类地址
      B类IP是以前两位为“10”。从第一位到第十六位为是它的网络标识后十六位为相当于主机标识
      范围:128.0.0.1 ~ 191.255.0.0
  • C类地址
      C类地址的前三位为“110”的地址,从第一位到第二十四位为网络标识,剩余的8位为主机标识
      范围:191.255.0.1 ~ 239.255.255.0
  • D类地址
      D类地址的前四位“1110”的地址,从第一位到第三十二位是它的网络地址,D类地址没有主机标识,通常用于多播。
      范围:224.0.0.0 ~ 239.255.255.255

在分配IP地址关于主机标识有一点要注意,既要用比特位表示主机地址时不可以全部为0或全部为1全部为零标识对应的网络标识或IP地址不可获知的情况下才使用,而全部为1通常作为广播地址,这就是为什么C类地址每个网段内最多有254个主机。

子网掩码

  • 为什么需要子网掩码
      一个IP地址只要确定了其分类,也就确定了它的网络标识和主机标识。网络标识相同的计算机必须同属于一个链路,这样直接使用A,B类地址显得有点浪费,于是人们开始使用一种新的组合方式以便减少这种浪费。
  • 子网与子网掩码
      子网就是一个IP地址的网络标识和主机标识不在受制于改地址的类别,而是由一个叫做子网掩码的识别码通过子网网络地址细分出比A,B,C类更小粒度的网络。

这种方式其实是将A,B,C类的部分主机标识用来当做子网地址可以将原来的网络分为多个物理网络的一种机制。

  • 子网掩码的计算方式
      子网掩码也用二进制标识的话也是32位,它对应的网络标识全部为“1”,而对应的主机标识部分全部为0
  1. 缺省子网掩码
      缺省子网掩码即未划分子网,网络标识部分全为1,主机标识部分全为0.
      A类子网掩码: 255.0.0.0
      B类子网掩码: 255.255.0.0
      C类子网掩码: 255.255.255.0
  2. 自定义子网掩码
      讲一个划分为一个子网,需要使用不同的网络号和子网号,实际上我们可以将主机号分为子网号子网主机号
      未做子网划分的IP:网络标识 + 主机表示;
      未做子网划分的IP:网络标识 + 子网号 + 子网主机号;

子网划分说白了是这样一个事情:因为在划分了子网后, IP 地址的网络号是不变的,因此在局域网外部看来,这里仍然只存在一个网络,即网络号所代表的那个网络;但在网络内部却是另外一个景象,因为我们每个子网的子网号是不同的,当用化分子网后的 IP 地址与子网掩码(注意,这里指的子网掩码已经不是缺省子网掩码了,而是自定义子网掩码,是管理员在经过计算后得出的)做 ' 与 ' 运算时,每个子网将得到不同的子网地址,从而实现了对网络的划分(得到了不同的地址,当然就能区别出各个子网了,有趣吧)。

  1. 子网掩码编码


IPV4的首部

通过IP通信时,需要在数据的前面加上IP首部信息,其首部信息的组成如下图:


  这里只介绍:八位的TTL字段。这个字段规定该数据包在穿过多少个路由之后才会被抛弃。某个IP数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。 这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者64。

IP协议的相关技术

DNS

DNS(Domain Name System),可以将那些字符串URL转化成为IP地址,为了实现该功能主机往往会利用一个叫做host的数据库文件。

ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据包。然而在底层的数据链路层,进行实际通信时却又必要了解每个IP地址所对应的MAC地址。

ARP协议概要

ARP(Address Resolution Protocol)是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接受数据包的网络设备对的MAC地址。

如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由的MAC地址,不过ARP只适用于IPV4而不适用IV6。

ARP的工作机制

从一个IP地址发送ARP请求包以了解其MAC地址,目标地址将自己的MAC地址填入其中的ARP响应包返回到IP地址。由此,可以通过ARP从IP地址获得MAC地址,实现链路内的IP通信。

IP地址和MAC地址缺一不可

疑问:只要知道了IP地址,即使不做ARP,只要在数据链路上做一个广播不就能发送给主机B?
  解答:第一:当接受主机在另一个数据链路层,没有IP地址即便知道主机B的MAC地址,无法穿透路由器C也不能将数据发送给主机B;第二:假定MAC地址就用广播地址, 那么路由器D也会接收到该广播消息,于是路由器又将消息转发给路由器C,导致数据包重复发送两次。

RARP

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

ICMP

ICMP的主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程中P包被废弃的具体原因,改善网络设置等
  ICMP的消息分成两类:一类是通知出错的原因的消息,另一类是用于诊断的查询消息。

主要的ICMP消息

  • ICMP目标不可达消息
      IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达消息的ICMP消息,并在这个消息中小时不可达的具体原因。
  • ICMP重定向消息
      如果路由器发现发送端主机使用了次优化的路径发送数据,那么它会返回一个ICMP的重定向消息给这个主机,这个消息中包含了最适合的路由信息源数据
  • ICMP超时消息
      IP包中有一个字段叫做TTL(Time To Live),它的值随着每经一次路由器就会减1,知道该值减为0时该包会被丢弃。此时,IP路由器将会发生一个ICMP的超时信息给发送端主机,并通知该包被丢弃。
  • ICMP回送消息
      用于进行通信的主机或路哟器之间,判断所发送的数据包是否已经成功到达对端的一种消息。网络上的ping命令就是利用这个消息来实现。

DHCP

DHCP的用途

DHCP(Dynamic Host Configuration Protocol)是用来自动设置IP,统一管理IP地址分配。

DHCP工作机制

在使用DHCP之前,首先使用一台DHCP服务器。让后将DHCP所需要分配IP地址设置到服务器上,还需要将相应的子网掩码,路由控制信息以及DNS服务器地址等设置到服务器上。


IP隧道

网络层首部后面继续追加网络层首部的通信方法叫做IP隧道

TCP与UDP

传输层的作用

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

传输层的定义

传输层用于各应用程序之间的通信,端口号可以识别传输层上一层的应用层中所要进行处理的具体程序

IP首部中有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输层协议,是TCP还是UDP。

UDP与TCP的区别

TCP与UDP 的区别见下表格:


端口号

端口号的定义

数据链路和IP中的地址,分别指MAC地址和IP地址。前者用来识别同一链路中不同计算机,后者用来识别TCP/IP网络中互联的主机和路由器。在传输层中也有类似地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同程序因此也被叫做程序地址

根据端口号识别应用

一台计算机上同同时可以运行多个程序,列入接受WWW服务的Web浏览器,电邮客户端,远程登录用的SSH客户端等程序。传输层协议正是利用串口号来识别计算机中正在进行通信的应用程序。

TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。他们是源IP地址,目标IP地址,协议号,源端口号,目标端口号。只要其中某一项不同,就被认为是不同的通信。

端口号是如何确定的

确定端口号的方法有两种:

  • 标准的既定端口号
      这种方法也叫静态方法,它是指每个应用程序都有其指定的端口号。但并不是说可以随意的使用一个端口号。每个端口号都有其对应的使用目的。
      例如HTTP,TELNET,FTP等广为使用的应用协议中使用的端口号就是固定的。知名端口号一般由0到1023的数字分配而成。
  • 时许分配法
      该方法下服务端有必要确定监听端口,但是接受服务的客户端没必要确定端口。在该种方法下服务端没有设置自己的端口号而全权交给操作系统分配,动态分配的端口号的取值范围为415265535之间。

端口号与协议

端口号由其使用的传输层协议决定,因此,不同的传输层协议可以使用相同的端口号,此外,那些知名端口号传输层协议关系,只要端口号一致都将分配同一种程序进行处理,例如53端口在TCP于UDP中都用于DNS服务。

UDP

UDP(User Datagram Protocol)不提供复杂的控制机制,利用IP提供无连接的通信服务,并且它是将应用程序发来的数据在接收到那一刻,立即按照原样发送到网络上的一种机制。
  UDP经常用于以下几个方面:

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

TCP

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

TCP的连接与断开

  • TCP连接的三次握手

    第一次握手: 建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
    第二次握手: 服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
    第三次握手: 客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
  • TCP断开的四次挥手

    第一次分手: 主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
    第二次分手: 主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
    第三次分手: 主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
    第四次分手: 主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

通过序列号与确认应答提高可靠性

序列号是按顺序给发送数据的每一个字节(8位字节)都标上编号,接受端查询接受数据的TCP首部中的序列号和数据的长度,将自己下一步接收的序号作为ACK发送回去。就这样,通过序列号和确认应答号,TCP可以实现可靠传输。

TCP以段为单位发送数据

在建立 TCP连接的同是,可以确定发送数据包的单位MSS(Maxium Segment Size),最理想的情况是,最大消息长度真好使IP中不会被分片处理的最大长度
  MSS是在三次握手的时候,在两端的计算机之间倍计算得出的。

利用窗口控制提高速度

TCP以一个段为单位,每发送一个段进行一次确认应答,这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。为了解决这个问题TCP引入了窗口,即发送端主机在发送了一个段以后不必要一直等待确认应答,而是继续发送。
  窗口大小是指无需等待却恶人应答而可以继续发送数据的最大值

窗口控制与重发控制

在使用窗口控制,如果出现段丢失,需要考虑以下两种情况:

  • 确认应答未能返回的情况
      在该种情况下,数据已经到达对端,是不需要进行重新发送的。然而,在没有使用窗口控制的时候,没有收到确认应答是要进行重发的。
  • 某个报文丢失的情况
      接收主机如果接收到一个自己应该接受的序号以外的数据时,会针对当前为止收到的数据返回确认应答,如果发送端主机如果连续3次收到同一个确认应答,就会将其所对应的数据进行重发

拥塞控制

有了窗口控制,首发主机之间即使不再以一个数据段为单位发送确认应答,也能够连续发送大量数据包,但是,计算机处在一个共享的环境下,有可能因为其他主机之间的通信使得整个网络拥堵。如果在该种情况下突然发送一个较大数量的数据会导致网络瘫痪,。
  TCP为了防止该问题的出现,在通信的一开始就会通过一个叫做慢启动的算法的数值,对发送数据进行控制。

慢启动开始的时候,将这个拥塞窗口的大小设置为1个数据段发送数据,之后每收到一个确认应答拥塞窗口的值就增加1。
  慢启动阈值:随着包的每次往返,拥塞窗口也会以1.2.4等的指数函数增长,拥堵状况激增甚至导致网络瘫痪,于是引入慢启动阈值的概念,只要拥塞窗口超出这个阈值,在每收到一个确认应答时,志永续以下面这种比例放大拥塞窗口:
(一个数据段的字节数 / 拥塞窗口(字节))X一个数据段的字节数

UDP的首部格式

下图是UDP的首部格式,UDP首部由源端口号,目标端口号,包长和校验和组成

TCP的首部格式


  TCP的首部格式有下列元素构成:

  • 源端口号
      表示发送端端口号,字段长16位。
  • 目标端口号
      表示接受端端口号,字段长16位。
  • 序列号
      字段长32位,序列号是指发送数据的位置。每发送一次数据,就累加一次该数据的字节数大小。

序列号不会从0或1开始,而是在建立连接时由计算机生成的随机数作为其初始值,通过SYN包发送给接受端主机,然后将每转发过去的字节数累加到初始值上标识数据的位置,此外,在建立连接和断开时发送的SYN和FIN包虽然不携带数据,但是也会作为一个字节增加序列号。

  • 确认应答号
      确认应答号字段长度为32位,是指下一次应该接受到的数据序列号。实际上,它是指已经接收到的确认应答号减一为止的数据。发送端接收到这个确认应答号以后可以认为这个序列号以前的数据都被正常接收。
  • 数据偏移
      该字段表示TCP所传输的数据应该从TCP包的那个位置开始
  • 控制位
      字段为8字节,当控制位上的值为1时,具体含义如下图:

       ACK(Acknoeledge Flag):该位为1时,确认应答的字段变为有效,TCP规定除了最初建立连接时的SYN包之外该位必须设置为1
      SYN(Synchronize Flag):用于建立连接。SYN为1表示希望建立连接,并在其序列号字段进行序列号初始值的设定。
      FIN(Fin Flag):该位为1时,表示今后不会再有数据发送,希望断开连接,当同心希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。每个主机又对对放的FIN包进行确认应答后就可以断开连接。
      窗口大小(Windows ):该字段长为16位。用于通知从相同的TCP首部确认应答号所指位置开始能够接收数据的大小。

TCP不允许发送超过串口大小的数据,不过,如果窗口为0,则可以表示窗口探测,以了解窗口的大小。但这个数据必须是1字节。

TCP首部与UDP首部的比较

  • TCP首部中没有表示包长度和数据长度的字段。可由IP层获知TCP包长度,由TCP的包长客货值数据的长度。
  • TCP的校验和无法关闭

应用协议

应用层协议的定义

  利用网络的应用程序很多,包括Web浏览器,电子邮件,远程登录,文件传输,网络管理。能够让这些应用进行特定通信处理的正是应用协议

TCP和IP等下层协议是不依赖于上层应用了类型,实用性非常广泛的协议。而应用协议则是为了实现实现某种应用而设计和创造的协议。

URI

  URI(Uniform Resource Identifier)用于标识资源。URL(Uniform Resource Locator)用于标识婚恋网中资源的具体位置。但URI不局限于标识还联网资源,它可以作为所有资源的识别码。

相比URL的狭义概念,URI则是一个广义的概念。因此,URI可以用在除了WWW之外的其它应用协议中
  URI所表示的组合叫做方案,URI的http方案的具体格式如下

  • http://主机名/路径
  • http://主机名:端口/路径
  • http://主机名:端口号/路径?访问内容#部分信息
    其中主机名表示域名IP地址,端口号表示传输端口号。省略端口号时,则表示采用http的默认端口80。路径表示主机上该信息的位置,访问内容表示要传给CGI的信息,部分信息表示页面当中的位置等。

(完)

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 3,631评论 0 4
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 10,116评论 6 174
  • 一、网络基础知识 1. OSI 参考模型 OSI 模型中,每个分层都接受由它下一层所提供的特定服务,并且负责为自己...
    SeanCST阅读 1,029评论 0 6
  • 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍。 一、 计算机网络体系结构分层 二、 TCP/IP 基础...
    涤生_Woo阅读 52,242评论 37 996
  • 网络层简介 1. 概念 为解决经由多条链路的交付问题,从而设计了网络层。其主要负责主机到主机的交付,并且在分组经过...
    顾慎为阅读 1,053评论 0 0