Role of the transport layer
• The transport layer is responsible for providing a reliable end-to-end connection between two application processes in a network
 • Abstracting away the physical subnet
 • Does not involve intermediate nodes
 • Takes a network address (IP) and transport address (port) to ensure packets are received by the desired service
 ·传输层负责在网络中的两个应用进程之间提供可靠的端到端连接
 ·抽象出物理子网
 ·不涉及中间节点
 ·获取网络地址(IP)和传输地址(端口),以确保数据包被所需的服务接收
 
Comparison with other OSI layers
• Much of the functionality of the Transport and Datalink layers are the same but with any complex network between hosts abstracted away
 • The Network layer is run by communications providers while the Transport layer is run by communicating hosts
 ·传输层和数据链路层的大部分功能都是相同的,但主机之间的任何复杂网络都被抽象掉了。
 ·网络层由通信提供商运行,而传输层由通信主机运行
Well known ports
• Well known ports are (usually) assigned to a standard service that a
 system offers.
 • In combination with an IP, the port is used to move packets from the network to the desired application layer service. An example might be
 127.0.0.1:22 for SSH
 • This combination of IP + port is called a socket
 ·众所周知的端口(通常)被分配给标准服务,系统报价。
 ·与IP结合,端口用于将数据包从网络移动到所需的应用层服务。一个例子可能是127.0.0.1:22用于SSH
 ·这种IP +端口的组合称为套接字
 
Transport protocol data unit (TPDU)
• Used to encapsulate transport layer data
 • Passed to the Network layer, which is passed to the Datalink layer, which is passed to the Physical layer, sent across a network, then back up the stack and unwrapped
 ·用于封装传输层数据
 ·传递到网络层,然后传递到数据链路层,再传递到物理层,通过网络发送,然后备份堆栈并解包
Unicast vs Multicast vs Broadcast
• Unicast is a one-to-one transmission from one node in a network to another
 • Multicast is a one-to-many transmission from one node in a network to many selected nodes
 • Broadcast is a one-to-all transmission from one node to all other nodes on the network
 ·单播是从网络中的一个节点到另一个节点的一对一传输
 ·多播是从网络中的一个节点到许多选定节点的一对多传输
 ·广播是从网络上的一个节点到所有其他节点的一对多传输
 
Transport protocols
• There are two commonly supported transport layer protocols
- Transmission Control Protocol (TCP)
 - User Datagram Protocol (UDP)
• UDP is connectionless (also called fire and forget) and consequentially faster than TCP
– Used for real-time services (DNS lookup, online gaming, video streaming)
• TCP is connection oriented and while slower is more reliable
– Used for transfers that cannot fail (email, webpages, file transfers)
·有两种通常支持的传输层协议
1.传输控制协议(TCP)
2.用户数据报协议(UDP)
UDP是无连接的(也称为fire and forget),因此比TCP快。 
- 用于实时服务(DNS查找、在线游戏、视频流)
· TCP是面向连接的,速度越慢越可靠 - 用于不会失败的传输(电子邮件、网页、文件传输)
 
User Datagram Protocol (UDP)
• Designed for “one request, one response” applications where setting up a connection is too much work
 • An unreliable transport protocol
 • UDP is not very popular but has its use cases
 • “IP with extra header”
 • Many systems reject UDP on non-standard ports by default
 ·专为“一个请求,一个响应”的应用程序,其中设置连接是太多的工作
 ·不可靠的传输协议
 UDP不是很流行,但有它的用例
 ·“IP with extra header”
 ·许多系统默认拒绝非标准端口上的UDP
 
Transmission control protocol (TCP)
• Designed to be robust under unreliable internet conditions
 • Provides end-to-end connection
 • Utilises a 3-way handshake for connection
 • Utilises a sliding window protocol for flow control
 ·在不可靠的互联网条件下保持稳定
 ·提供端到端连接
 ·使用3次握手进行连接
 ·利用滑动窗口协议进行流控制
 
3-Way handshake
The TCP 3-Way Handshake prevents duplicate connections,and allows the nodes to reject spurious packets
- SYN (sync)
 - SYN/ACK
(sync/acknowledged) - ACK (acknowledged)
At this point x becomes the starting sequence number for the sender, and y becomes the starting sequence number for the receiver
TCP 3-Way Handshake防止重复连接,并允许节点拒绝虚假数据包 - SYN(同步)
 - SYN/ACK
(sync/确认) - ACK(已确认)
此时,x成为发送方的起始序列号,y成为接收方的起始序列号

 
Flow control
• TCP operates a sliding window mechanism where each acknowledge includes the amount of data the receiver is now willing to accept.
 • A number of measures are commonly employed to ensure that the window size is roughly a multiple of the senders desired segment size.
 • Different flow control schemes are one of the main differences between different versions of TCP used today (there are several).
 TCP采用滑动窗口机制,其中每个确认包括接收方现在愿意接受的数据量。
 ·通常采用许多措施来确保窗口大小大致为所需分段大小的倍数。
 不同的流量控制方案是当今使用的TCP不同版本之间的主要差异之一(有几个)。
Sliding window
• Sender sends 2048 bits to start
 • Receiver’s buffer has capacity so it acks the send and sets the window
 • Sender sends the same amount which fills receiver’s buffer
 • Receiver acks the send and sets the window to 0 until the buffer is cleared
 • Receivers buffer gets cleared 2048 bits so it acks the last send again and sends the new window
 ·UART发送2048位启动
 ·接收方的缓冲区有容量,因此它确认发送并设置窗口
 ·发送器发送与填充接收器的缓冲区相同的量
 ·接收方确认发送并将窗口设置为0,直到缓冲区被清除
 ·接收器缓冲区被清除2048位,因此它再次确认最后一次发送并发送新窗口

UDP vs TCP
UDP
 • Connectionless
 • Unicast, Multicast, or Broadcast communication
 • No guarantees (packets may be lost, out of order,dropped)
 • Faster due to “fire and forget” model
TCP
 • Connection oriented
 • Unicast communication
 • Data delivery guarantees
 – Packets arrive in order
 – Duplicate packets are rejected
 – Dropped packets are retransmitted
 • Slower due to connection overhead
 • Can deal with congestion
 UDP
 ·无连接
 ·单播、多播或广播通信
 ·无保证(数据包可能丢失、乱序、丢失)
 ·更快,因为“火灾和遗忘”模式
TCP
 ·面向连接
 ·单播通信
 ·数据传输保证
 - 数据包按顺序到达
 - 拒绝重复的数据包
 - 重传丢弃的数据包
 ·由于连接开销而变慢
 ·可以处理拥塞
TCP congestion control - slow start
In order to deal with packet congestion,TCP utilises an algorithm called slow start
- Window starts at 1 max segment(TDPU) size
 - Doubles window each time an ack is received, exponential increase
 - When a packet is lost (congestion), the window reverts to 1 max segment and the process starts from step 1 again
为了处理数据包拥塞,TCP使用一种称为慢启动的算法
1.窗口从1个最大段(TDPU)大小开始
2.每次接收到ACK时将窗口加倍,指数增加
3.当数据包丢失(拥塞)时,窗口恢复为最大1个段,过程再次从步骤1开始。

 
TCP congestion control - threshold
Another way TCP deals with congestion is by utilising a threshold
- Window starts at 1 max segment(TDPU) size
 - State some threshold (e.g. 32k) and double the window each time an ack is received until it is reached
 - Once threshold is met, linearly increase window size
 - When a packet is lost (congestion) reset threshold to ½ current window and the process starts from step 1 again
TCP处理拥塞的另一种方法是利用阈值
1.窗口从1个最大段(TDPU)大小开始
2.规定某个阈值(例如32 k),并在每次收到确认时将窗口加倍,直到达到该阈值
3.一旦达到阈值,则线性增加窗口大小
4.当数据包丢失(拥塞)时,将阈值重置为当前窗口的1/2,并再次从步骤1开始处理

 



















