UDP and TCP
UDP
- unreliable, just add de-multiplexing and error checking on data than IP.
- Best effort datagram(数据报) service
- Multiplexing enables sharing of IP datagram service
- Simple transmitter & receiver
- Connectionless: no handshaking & no connection state
- Low header overhead
- No flow control, no error control, no congestion control
- UDP datagrams can be lost or out-of-order
- Applications
- multimedia (e.g. RTP)
- network services (e.g. DNS, RIP, SNMP)
UDP Datagram
- 0-255
- Well-known ports
- 256-1023
- Less well-known ports
- 1024-65536
- Ephemeral(短暂的) client ports
- Source and destination port numbers
- Client ports are ephemeral(短暂的)
- Server ports are well-known
- Max number is 65,535
- UDP length
- Total number of bytes in datagram (including header)
- 8 bytes ≤ length ≤ 65,535
- UDP Checksum
- Optionally detects errors in UDP datagram(Because the error packet will be discard)

UDP De-Multiplexing(解复用)
- All UDP datagrams arriving to IP address B and destination port number n are delivered to the same process
- Source port number is not used in demultiplexing

UDP Checksum Calculation

- UDP checksum detects for end-to-end errors
- Covers pseudoheader(伪报头) followed by UDP datagram
- IP addresses included to detect against** misdelivery(错误传输)**
- The use of UDP checksums is optional
- But hosts are required to have checksums enabled
TCP
- Reliable byte-stream service
- More complex transmitter & receiver
- Connection-oriented: full-duplex(全双工) unicast connection between client & server processes
- Connection setup, connection state, connection release
- Higher header overhead
- Error control, flow control, and congestion(拥塞) control
- Higher delay than UDP
- Most applications use TCP
- HTTP, SMTP, FTP, TELNET, POP3, …
TCP Multiplexing
- A TCP connection is specified by a 4-tuple(数组)
- (source IP address, source port, destination IP address, destination port)
- TCP allows multiplexing of multiple connections between end systems to support multiple applications simultaneously

Reliable Byte-Stream Service
- Stream Data Transfer:transfers a contiguous stream of bytes across the network, with no indication of boundaries
- groups bytes into segments(部分)
- transmits segments as convenient (Push function defined)
Reliability: error control to deal with IP transfer impairments(损害)

TCP Segment Format

TCP Header
Window Size:TCP protocol need ACK to ensure the packet be transported, if we receive ACK after every packet arriving, it will waste a lot of time.So we need the Window Size to tell us how many packet we can send one time.
- 16 bits to advertise window size
- Used for flow control
- Sender will accept bytes with SN from ACK to ACK + window
- Maximum win size 65535 bytes
- TCP Checksum
- Internet checksum method
- TCP pseudoheader + TCP segment

UDP and TCP的更多相关文章
- 移动端IM系统的协议选型:UDP还是TCP?
1.前言 对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你的第一行代码该如何编写. 从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论 ...
- RUDP之一 —— UDP VS TCP
原文链接 原文:http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ 介绍 大家好,我是Glenn Fiedler, ...
- 第五章 运输层(UDP和TCP三次握手,四次挥手分析)
序言 通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...
- 网游中的网络编程系列1:UDP vs. TCP
原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...
- DNS分别在什么情况下使用UDP和TCP
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下使用这两种协议. 如果用wiresha ...
- JAVA基础学习day24--Socket基础一UDP与TCP的基本使用
一.网络模型 1.1.OIS参考模型 1.2.TCP/IP参考模型 1.3.网络通讯要素 IP地址:IPV4/IPV6 端口号:0-65535,一般0-1024,都被系统占用,mysql:3306,o ...
- 初识-----基于Socket的UDP和TCP编程及测试代码
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- 通信协议之HTTP,UDP,TCP协议
1.UDP,TCP,HTTP之间的关系 tcp/ip是个协议组,它可以分为4个层次,即网路接口层,网络层,传输层,以及应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协 ...
- Http UDP还是TCP
http://1024monkeys.wordpress.com/2014/04/01/game-servers-udp-vs-tcp/ 在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面 ...
- 游戏服务器:到底使用UDP还是TCP
http://blog.jobbole.com/64638/ 在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面对. 一般来说你会听到人们这样说:“除非你正在写一个动作类游戏,否则你就用T ...
随机推荐
- ECMA6所有知识点大概笔记
ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现 初学者一开始学习JavaScript,其实就是在学3.0版的语法. -------------------- ...
- HDU4652:Dice
题面 传送门 题意 \(m\)面的骰子 求连续出现\(n\)个相同面的期望次数 或者 求连续出现\(n\)个不同面的期望次数 Sol 设\(f[i]\)表示已经出现了\(i\)~\(n\)这些面相同的 ...
- 浅谈PVC塑料配方计算软件的设计
1, 配方设计与配方计算 题目是配方计算,不是配方设计,设计是需要有深厚的塑料知识才可以做的,即生产什么塑料产品,需要放各种原料是什么,各自比较是多少,遇到什么情况下就要多放什么,少放什么.配方设计不 ...
- LESS嵌套中的Mixins和classes
less的嵌套规则对于有效组织你的css代码有较好的作用.其中使用mixin或者class都可以作为被嵌套的实体,但是二者还是有区别的: mixin必须由.name+(){}的pattern来定义,而 ...
- notepad ++ 编辑 powershell profile 文件时的诡异问题
使用notepad 编辑 C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 时,记事本打开和用notepad++打开显示的内容居然不一样. ...
- 快速替换dll命名空间 z
Step1:使用ildasm将代码反编译成il中间语言. 名字存贮为你想要的名字. Step2:用记事本打开il文件全局替换命名空间. Step3:使用ilasm将il文件编译成dll 按下回车即可生 ...
- Topshelf Configuration z
Topshelf Configuration While the Quickstart gives you enough to get going, there are many more featu ...
- PowerDesigner表设计转化为excel或者markdown
本文目的:知道有这种能够写脚本的方式减少工作量 写VBS脚本 导出
- C++的虚析构
最近准备复习一遍所有的知识点,先从基础开始做起,用几分钟写个继承和析构吧. 父类为A,子类为B,代码如下: class A { public: A() { cout << "构造 ...
- 利息力(force of interest)
一.提出问题 二.定义 设积累函数连续可导,则时刻 t 的利息力为 三.单利在 t 时刻的利息力 单利的利息力是时间的递减函数 四.复利在时刻 t 的利息力 复利的利息力是常数!与时间无关. 称为复利 ...