1 Principles behind Transport Layer Services


1.1 Multiplexing/Demultiplexing

Multiplexing at sender side, Demultiplexing at receiver side.


How Demultiplexing
Index with: IP + Port num

This part indicates that transport layer processes data with multiplexing, which function the multiple processes communicate in the network simultaneously without critical collisions. 
Now we can actually go in to UDP, but I'd like to put the principles in one section. Other Principles below are more relative withTCP.


1.2 Reliable Data Transfer

Reliability is one of the most important problem of Network. And it is obvious that there is no absolute reliability, though we are trying to find a more reliable way for data transmitting. 
So, most of the implementation of reliable data transferring is built on unreliable data transferring. It is an altitude to make it more reliable.



1. rdt1.0: reliable transfer over a reliable channel

It seems to be an ideal version of rdt.

2. rdt2.0: channel with bit errors

use checksum to detect errors: stop-and-wait
ACK: receiver tells sender that the pkt OK
NAK: receiver tells sender that the pkt BAD, and sender retransmit
So the rdt adds error detection and
receiver feedback

a fatal flaw: if ACK and NAK corrupt or duplicate.

3. rdt2.1: sequence number

Here are just two num 0 and 1. 
Sender must get the ACK/NAK before moving to next state.
Receiver must check if the pkt is duplicate, here num 0 and 1.
But the receiver can not know if the last ACK/NAK received OK at sender.

4. rdt2.2: a NAK-free protocol

Mostly same with rdt2.1 except without NAK
1) receiver send ACK for last pkt received OK
2) duplicate ACK at sender results in same action as NAK

5. rdt3.0: channel with errors and loss

new assumption: channel can lose pkts.
Sender wait amount of time for ACK. timeout->retransmit->multiple pkt, receiver must detect.

6. Pipeling


There are two types of pipeling protocols:
1) Go-back-N
Sender
There is N size window:

Timer for each pkt, timeout to retransmit. And the sender expects to get the pkt[nextseqnum]. 
Receiver:
Only send ACK for correctly-received pkt with highest sequence number - pkt[expectedseqnum].
If receiving out-of-order pkt, 
discard,
re-ACK with highest in-order sequence number.


2) Selective Repeat:
It promote some disadvantages of GBN of discarding the disorderred pkts. It buffers the pkts and move the windows until the lowerbound is ACKed(sender) or received(received)



1.3 Flow Control (talked in TCP)

1.4 Congestion Control

This is different from flow control. Congestion is said that too many sources sending much data too fast fornetwork to handle(but flow control is said to send and receiver).
There are several ways to congestion control, end systems lead(TCP) or network lead. I just want detail the congestion control in TCP below.

2 Transport Layer Protocols


2.1 UDP

1. Properties

1) connectionless: simple, small header, no congestion control

2) lost, deliver out of order

2. Checksum

An example

3. Segment Format

2.2 TCP

1. overview

end-to-end
reliable, in-order
pipeline
data: MSS
connection
flow control

2. RTT and Time out

1) RTT



2) Time out
timeout = RTT + safety margin
a. margin

b. timeout


3. rdt

sender
ACK received: update the Sendbase to ACK=y
time out: send with smallest sequence number

receiver

a. Formal: delay ACK

b. Higher than expected sequence: duplicated ACK of expected sequence

c. fill gaps: ACK of sequence at lower end of gap.

4. Retransmit

With the discussion above, if loss happens, there will likely be many duplicate ACKs. So sender will detect loss and begin tofast retransmit

Fast retransmit: resend segment before timer expire

5. Flow control

sender will not overflow the buffer of receiver.

Get the point above, sender limits unACKed data smaller thanspare room of receiver.

6. Connection Management

a. initiation work

seq num

flow control, buffer, rcvwindow

b. three way handshake

build:

1) client->server: SYN, initial seq num

2) server->client: SYNACK segment, server allocate buffers, specify initial seq num

3) client->server: reply ACK segment, may with data

close:

1) client->server: FIN

2) server->client: ACK first, after closing connection, send FIN

3) client->server: ACK

4) server: get ACK close.

7. Congestion control

To sum up the details of congestion control in TCP is that: send windows vary with the condition of congestion in the network. If the network is congested, the send will decrease the window size. If not the window will be enlarged. So the intension of sending
is according to the network condition.

How sender perceive congestion:

1) loss event: time out or 3 duplicate ACKs

Slow start

1) when connection begins, CongWin = 1 MSS

2) CongWin increase exponentially until loss event.

Loss

1) 3 dup ACKs:

Reno: CongWin half, win grow linear  -- 3 dup ACKs indicate the network capable of delivering some segments.

Tahoe: same with time out

2) timeout: CongWin set to 1 MSS, win grow exponentially to a threshold then linearly. -- timeout is a more alarming condition

End.




[Network]Transport Layer的更多相关文章

  1. Transport layer and Network layer

    http://stackoverflow.com/questions/13333794/networking-difference-between-transport-layer-and-networ ...

  2. [Network]Application Layer

    1 Principles of Network Applications 1.1 Application Architectures Client-Server Peer-to-Peer Hybird ...

  3. Transport Layer Protocols

    1 End-to-end Protocols(端到端协议) 传输层协议往往是主机对主机(host-to-host)或者说是端到端(end-to-end).通常希望传输层协议可以提供如下service: ...

  4. Host Controller transport layer and AMPs

    The logical Host Controller Interface does not consider multiplexing/routing over the Host Controlle ...

  5. 传输层-Transport Layer(上):传输层的功能、三次握手与四次握手、最大-最小公平、AIMD加法递增乘法递减

    第六章 传输层-Transport Layer(上) 6.1传输层概述 在之前的几章内容中,我们自底向上的描述了计算机网络的各个层次,还描述了一些处于不同层次下的经典网络协议(如以太网.无线局域网.或 ...

  6. 传输层-Transport Layer(下):UDP与TCP报头解析、TCP滑动窗口、TCP拥塞控制详解

    第六章 传输层-Transport Layer(下) 上一篇文章对传输层的寻址方式.功能.以及流量控制方法做了简短的介绍,这一部分将介绍传输层最重要的两个实例:TCP协议和UDP协议,看一看之前描述的 ...

  7. Elasticsearch client node 启动时出现警告:exception caught on transport layer 及java.net.NoRouteToHostException: No route to host

    发现该问题源自发现kibana不能打开sense,并且看见elasticsearch插件处于服务不可用状态,但是在client node上curl localhost:9200发现能够返回ES基本信息 ...

  8. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1

    3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...

  9. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).2

    3.5 面向连接的运输: TCP 3.5.1 TCP连接 TCP是因特网运输层的面向连接的可靠的运输协议. TCP连接提供全双工服务(full-duplex service). TCP连接是点对点的连 ...

随机推荐

  1. include设置属性在relativelayout布局中无效

    转自:http://4265337.blog.163.com/blog/static/195375820127935731114/ 再来说一个在使用这两个标签时最容易出现的问题. 经常会有同学在Rel ...

  2. Python学习入门基础教程(learning Python)--3.1Python的if分支语句

    本节研究一下if分支语句. if分支语句是Python下逻辑条件控制语句,用于条件执行某些语句的控制操作,当if后的条件conditon满足时,if其下的语句块被执行,但当if的控制条件condito ...

  3. 从零开始学Xamarin.Forms(一) 概述

    原文:从零开始学Xamarin.Forms(一) 概述     Xamarin 读 "ˈzæmərin",是一个基于开源项目mono的能够使用C#开发的收费的跨平台(iOS.And ...

  4. 安装好.net framework后运行慢

    表现 系统有时运行慢,尤其是.net程序运行得相当慢 mscorsvw.exe与mscorsvw.exe *32两个进程挂在任务管理器里时不时地占着CPU 解决 运行以下两条命令,加快这两进程的运行, ...

  5. 不合规范的html段落php处理细则

    最近业余时间在维护一个rss聚合应用,就发现很多网站feed的条目摘要存在各种问题,用strip_tags一刀切吧,对摘要的段落和样式扭曲了 例如:有一些网站的摘要是截断输出,例如指定的摘要长度截断, ...

  6. WPF中的三维空间(1)

    原文:WPF中的三维空间(1) WPF中可以创建三维几何图形,支持3D对象的应用,支持从3D Max等软件将3D文件obj导入设计中,但是目前还不支持将材质同时导入,这样需要在WPF中对3D对象重新设 ...

  7. "Cannot find entry symbol nable-stdcll-fixup; defaulting to 00401000" 解决方案

    在使用Qt 4.7.3, Qt 4.7.2 ,Qt 4.7.1(mingw 4.6.2 )的时候都会有一个问题无法编译通过,即用Qt Creator 编译的时候会发生一个错误 "Cannot ...

  8. 为什么tap事件绑定在document上,而不是对象本身上

    1.在移动端前端开发,click事件有300ms的延时,为了提升用户体验,快速响应.zepto添加了tap事件.tap是在手指触屏横纵向移动距离小于30px,触发tap事件.移动距离的判断是通过tou ...

  9. laydate天蓝色的皮肤

    要使用该网站日期控件.就到网上找laydate,但laydate无天蓝色的肌肤,其他皮肤不能进行集成和现场,对自己做了一个天蓝色的肌肤,分享给大家使用. 皮肤下载 版权声明:本文博主原创文章.博客,未 ...

  10. android数据储存之应用安装位置

    原文地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity 从API8開始,你能够将你 ...