传输层TCP/IP简记

概述

@Copyright图片版权归笔者全部,转载请告知.网络

目的

这篇文章能帮助你们快速回忆计算机网络体系,固然短短的文章并不能深刻表述,文章并未涉及网络层和数据链路层,重点叙述了传输层.可能有所不足或错误,也谢谢你们指出,共同进步数据结构

结构体系简述

计算机网络协议体系结构目前有两种,一种是OSI/RM七层协议,另外一种则是TCP/IP协议体系,两种体系结构对计算机网络分别划分了7和5个层次,OSI/RM是一种参考协议,当前用的主要仍是TCP/IP体系.
clipboard.pngtcp

TCP/IP概述

TCP/IP协议族按照层次由上到下,层层包装。顶层是应用层,里面有http,ftp,等等咱们熟悉的协议。第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其余的数据以肯定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输作准备。再往下则是物理层了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等,这不是咱们关注的部分,它几乎和tcp/ip协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从获得的数据包解开,最后拿到须要的数据。这种结构很是有栈的味道,因此也把tcp/ip协议族称为tcp/ip协议栈。测试

clipboard.png

详述

应用层

  1. 在应用层包含了不一样类型的应用进程,如:telnet远程登陆、FTP文件传输,qq聊天等,计算机应用直接接触的协议都放在应用层里,须要通讯时,将应用层的信息按照应用层所对应的协议编写,传向下一层.
  2. 例如http协议,能够初略的理解成编写成文本后经过传输层发送.以下测试图,给你们参考下.

图片描述

传输层

  • 传输层主要为两台主机上的应用程序提供端到端的通讯服务。在TCP/IP协议族中,有两个不一样的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
  1. TCP:为两台主机提供高可靠性的数据通讯。它所作的工做包括把应用程序交给它的数据分红合适的小数据块(数据段)交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时间等。因为传输层提供了高可靠性的端到端的通讯服务,所以应用层能够忽略掉全部这些细节。
  2. UDP:为应用层提供一种很是简单的服务。它只是把称做数据报的分组从一台主机发送到另外一台主机,但并不保证该数据报能到达另外一端。任何须需的可靠性必须由应用层来提供。

这两种传输层协议分别在不一样的网络环境与应用场合中有不一样的用途。编码

功能
  • TCP和UDP采用16 bit的端口号来识别不一样的应用程序。

网络服务通常都是经过知名端口号来识别的。知名的1~1023之间的端口号由Internet号码分配机构(Internet Assigned Numbers Authority, IANA)来管理。如今IANA管理1~1023之间全部的端口号。
大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口号是为其余服务(Internet上并不经常使用的服务)预留的。spa

应用程序 FTP TELNET HTTP HTTPS
熟知端口号 21 23 80 443

若是仔细检查这些标准的简单服务以及其余标准的TCP/IP服务(如Telnet、FTP、SMTP等)的端口号时,咱们发现它们都是奇数。这是由于这些端口号都是从NCP端口号派生出来的(NCP,即网络控制协议,是ARPANET的传输层协议,是TCP的前身)。NCP是单工的,不是全双工的,所以每一个应用程序须要两个链接,需预留一对奇数和偶数端口号。当TCP和UDP成为标准的传输层协议时,每一个应用程序只须要一个端口号,所以就使用了NCP中的奇数。计算机网络

TCP传输控制协议

先来一张亲手绘制的美图指针

clipboard.png

  1. 如上,即是一个tcp数据段的数据结构图
关键名词介绍
  • 序号:每一个数据段中的数据部分中的每一个字节都有一个序号,而当前数据段的序号则为第一个字节的序号.
  • 确认号:但愿对方传过来的下一数据段的序号.
  • 窗口大小:表示本端能够接收的数据量,该量只针对数据部分的数据大小.
  • 数据偏移:由于数据段中存在可选项,所以并不知道真正的数据是从哪儿开始的,所以数据偏移记录了数据的其实位置.
  • URG:紧急
  • ACK:表示响应
  • RSH:表示有数据传输
  • RST:表示链接重置
  • SYN:表示创建链接
  • FIN:表示关闭链接

三次握手和四次挥手

先来一张三次握手图code

clipboard.png

1.客户端说我要链接你,因而把请求链接的SYN字段置为1,序列号为n的清量请求数据段发送给接收方.
2.接收方收到后,发送了一个请求链接字段SYN和确认字段ACK置为1,序号为m,确认号为n+1(表示我刚刚收到你的数据段序号为n,下面我但愿收到n+1的数据段)的数据段给发送方.
3,发起链接的一方收到确认信息后,对此确认信息进行确认,因而发送了序号为n+1,确认号为m+1的确认轻量级数据段进行确认.
4.接收方收到确认信息后,此端到端的通讯即建立成功.blog

  • 注意在请求链接时,可能会因为某种缘由形成请求链接的数据中断.此时接收方有超时机制,避免长时间忙等.超时重传机制将在另一篇文章中完整展开.
  • 若两方同时发起链接请求,此时双方互为发送方和接收方,通讯依然能正常创建.

四次挥手图

clipboard.png

1.客户端发起关闭链接的请求,因而发送FIN字段置为1,序号为n的数据段.
2.服务端收到请求后,发送了ACK字段为1,序号为m的数据段,由于关闭客户端发送数据的链接,因此服务端不须要再收到确认了,所以无需发送确认号.
3.当服务端认为本身数据传输完成了,因而发起FIN字段为1,序号为1,确认号为n+1的数据段,由于上一次客户端发送的是序号n,因此这次请求但愿收到n+1的数据段.客户端收到关闭请求后,发送确认数据段.

注:

1.以上 称服务端和客户端有些许绝对,只是方便描述,其实能够看作发送端和接收端,即平级的.
2.关闭链接也可能发生数据段丢失,所以也会引入超时重传机制.

附:

名词详解

SYN:TCP链接的第一个包,很是小的一种数据包。 TCP首部的数据格式,若是不计任选字段,它一般是20个字节。 每一个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址惟一肯定一个TCP链接。序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。若是将字节流看做在两个应用程序间的单向流动,则TCP用序号对每一个字节进行计数。序号是32 bit的无符号数。当创建一个新的链接时,SYN标志变1。序号字段包含由这个主机选择的该链接的初始序号ISN(Initial Sequence Number)。由于SYN标志消耗了一个序号,该主机要发送数据的第一个字节序号为这个ISN加1。确认序:号包含发送确认的一端所指望收到的下一个序号。确认序号应当是上次已成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。发送ACK无需任何额外代价,由于32 bit的确认序号字段和ACK标志同样,老是TCP首部的一部分。所以,咱们看到一旦一个链接创建起来,这个字段老是被设置,ACK标志也老是被设置为1。TCP为应用层提供全双工服务。这意味数据能在两个方向上独立地进行传输。所以,链接的每一端必须保持每一个方向上的传输数据序号。在TCP首部中有6个code bits 中的多个可同时被设置为1。含义以下:URG紧急指针(urgent pointer)有效. ACK确认序号有效。 PSH接收方应该尽快将这个报文段交给应用层。 RST重建链接。 SYN同步序号用来发起一个链接。 FIN发端完成发送任务。TCP的流量控制由链接的每一端经过声明的窗口大小来提供。窗口大小为字节数,窗口大小是一个16 bit字段,于是窗口大小最大为65535bit数据即8KB。检验和覆盖了整个的TCP报文段:包括了TCP首部和TCP数据。这是一个强制性的字段,必定是由发端计算和存储,并由收端进行验证。只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另外一端发送紧急数据的一种方式。最多见的可选字段是最长报文大小,又称为MSS (Maximum Segment Size)。每一个链接方一般都在通讯的第一个报文段(为创建链接而设置SYN标志的那个段)中指明这个选项。它指明本端所能接收的最大长度的报文段。TCP报文段中的数据部分是可选的。在一个链接创建和一个链接终止时,双方交换的报文段仅有TCP首部。若是一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多状况中,也会发送不带任何数据的报文段。

相关文章
相关标签/搜索