赞
踩
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
http=TCP+80 (简单地说就是给TCP加一个端口一个名称)
https=TCP+443
ftp=TCP+21
STMP=TCP+25
PoP=TCP+110
RDP=TCP+3389
共享文件夹=TCP+445
SQL=TCP+1433
DNS=UDP+53 (极少数情况下使用TCP+53)
TCP(传输控制协议)—需要分段,编号,需要建立会话,有流量控制,可靠传输
UDP(用户数据报协议)—一个数据包就能完成数据通信,不用建立会话(不可靠传输)
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元
TCP 传送的数据单位协议是 TCP 报文段 (segment)。
UDP 传送的数据单位协议是 UDP 报文或用户数据报。
TCP 包括连接建立、数据传输和连接终止三个阶段,并提供可靠的连接管理机制,确保数据的正确传输。TCP 是面向连接的运输层协议,要先建立会话。每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一),提供全双工通信同时收发。
TCP中采用了停止等待协议的思想。发送方发送数据后等待接收方的确认(ACK),一旦接收到确认,发送方才会发送下一个数据包。如果发送方未收到确认,将认为数据包丢失或损坏,会进行重传。这种机制确保了数据的可靠传输。
每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
无差错的情况:
出现差错的情况:
在这两种情况下,B 都不会发送任何信息,那A 如何知道 B 是否正确收到了 M1 呢?
解决方法:超时重传
A 为每一个已发送的分组设置一个超时计时器,A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组。
确认丢失和确认迟到
确认丢失----若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内将不会收到确认,因此 A 在超时计时器到期后重传 M1。
假定 B 正确收到了 A 重传的分组 M1。这时 B 应采取两个行动:
(1) 丢弃这个重复的分组 M1,不向上层交付。
(2) 向 A 发送确认。确认迟到—B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1。
停止等待协议的优点是简单,但缺点是信道利用率太低。
TCP还包括流水线传输协议的特性,允许发送方在等待确认的同时继续发送数据。TCP通过滑动窗口机制,发送方可以维护一个发送窗口范围内的多个数据包,而不需要等待所有数据包都被确认才发送下一个数据包。这样可以提高数据传输效率。
提高信道利用率的方法就是提高分组发送时间Td,即流水线传输,发送方连续发出多个分组,比如连续 ARQ 协议和滑动窗口协议。
由于信道上一直有数据不间断地传送,流水线传输可获得很高的信道利用率。
连续 ARQ 协议和滑动窗口协议采用流水线传输方式。
累计确认的优点:容易实现,即使确认丢失也不必重传
TCP 默认使用滑动窗口机制来进行流量控制和拥塞控制。滑动窗口机制允许发送方根据接收方的反馈来动态调整发送数据的数量,以确保网络传输的高效性并避免过载。
针对单个连接数据处理能力的控制。
发送缓冲区丢包:
ifconfig eth0:
流量控制队列,参数:txqueuelen=1000、dropped =0(大于0,有可能发生了流控丢包),更改队列长度:ifconfig eth0 txqueuelen=1500
接收缓冲区丢包:
cat /proc/net/netstat
发送方生成sequence,接收方收到哪些seq并生成ack机制,如果一段时间内没有等到ack,客户端就重发。
传输层:数据分段机制,MSS(maxximum seqment size)如果数据包大于mss则会拆成小于等于mss的包;
网络层:MTU(maximum transmit unit)会继续分包,mss等于mtu减去40byte
max头部、ip头部(20Byte)、tcp头部(20Byte)、数据-MSS(1460Byte)、FCS
数据包到达接收缓冲区的顺序不一致,依靠数据包的sequence,接收方就能知道数据包的先后顺序,内核中有一个乱序队列;
TCP 使用乱序重排机制来正确地对接收到的乱序数据包进行排序,以确保数据包在传输上层应用程序之前按正确的顺序被组装。这种机制通过使用序列号字段(Sequence Number)来重新排序乱序的数据包,以恢复原始数据流的顺序性。
乱序重排机制在 TCP 的接收端实现,它负责管理接收缓冲区,将接收到的乱序数据包按照其序列号正确排序后再传递给应用层。
最大报文段长度 MSS 是每个 TCP 报文段中的数据字段的最大长度,与接收窗口值没有关系。
物理层:
链路层:
网络层(IP层):IP 数据报 = IP首部 + TCP 报文段(不能超过MTU的1500字节,标准以太网定义)
运输层(TCP层):TCP 报文段 = TCP首部 + TCP数据
应用层:数据格式随便定(传输过程中为字节流),尽量不超过1460字节,在超过 MTU 大小时,IP 层会负责对数据包进行分片。IP 层根据目标网络的 MTU 大小将大的数据包分割成更小的片段,并在接收端重新组装这些片段。这样可以确保大数据包能够在网络中正确传输,尽管分片可能会带来额外的开销和延迟。
套接字:socket = (IP地址 : 端口号) ,每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)}
TCP 虽然是面向字节流的,但传送的数据单元却是报文段。一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。
TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。因此 TCP 首部的最小长度是 20 字节。
源端口 Source Port(2 字节)
端口是运输层与应用层的服务接口。运输层的复用和分用功能通过端口实现。
目的端口 Destination Port(2 字节)
端口是运输层与应用层的服务接口。运输层的复用和分用功能通过端口实现。
序号 Stream index(4 字节)
TCP 连接中传送的数据流中的每一个字节都有一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
(如发送的数据为1234,则序号为1;发送的数据为567,则序号为5;发送的数据为89,则序号为8;而不是1,2,3依次计数)
【若确认号 = N,则表明:到序号 N – 1 为止的所有数据都已正确收到。即若确认号为5,则5之前的1234数据已经收到】
【首部之后是数据部分,但首部的长度不固定,可能会由于选项长度的变化而变化,数据偏移量的变化就是由于这个】
保留(6 比特)
占 6 位,保留为今后使用,但目前应置为 0。
紧急 URG(1 比特)
控制位。当 URG = 1 时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应尽快传送 (相当于高优先级的数据)。
确认 ACK(1 比特)
控制位。只有当 ACK =1 时,确认号字段才有效。当 ACK =0 时,确认号无效。
推送 PSH (1 比特)
PuSH控制位。接收 TCP 收到 PSH = 1 的报文段后,就尽快(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满后再交付。
复位 RST (1 比特)
ReSeT控制位。当 RST=1 时,表明 TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步 SYN (1 比特)
SYNchronization控制位。
终止 FIN (1 比特)
Finish控制位。用来释放一个连接。
FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口(2 字节)
窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。【窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化】
检验和(2 字节)
检验和字段检验的范围包括首部和数据这两部分。
在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
紧急指针(2 字节)
在 URG = 1时,指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),指出了紧急数据的末尾在报文段中的位置。
【最大报文段长度 MSS,不能太大,也不能太小,应尽可能大(默认值= 536 字节)】
TCP 数据部分是 TCP 报文段中的有效载荷数据,也就是传输的实际数据内容。在 TCP 中,应用层的数据被分割成更小的数据块,并封装在 TCP 报文段的数据部分中进行传输。
TCP 是一种面向连接的协议,它通过将应用层数据转换为数据包(TCP 报文段)来实现可靠的端到端通信。这些数据包包括 TCP 头部(包含控制信息如源端口、目标端口等)和数据部分,其中数据部分则包含了应用层产生的字节流数据。
应用程序向 TCP 传递字节流数据,TCP 将其分割成合适大小的数据块并添加所需的控制信息,然后通过网络传输到接收端。在接收端,TCP 会将接收到的数据包重新组装成原始的字节流数据,以便应用程序处理。
因此,TCP 数据部分中确实包含了应用层的字节流数据,这些数据经过 TCP 的封装和传输,最终被交付给接收端的应用程序进行处理。
4次“挥手”的过程如下。
1)客户端到服务端:我关了。
2)服务端到客户端:好的,收到。
3)服务端到客户端:我也关了。
4)客户端到服务端:好的,收到。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。