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的更多相关文章

  1. 移动端IM系统的协议选型:UDP还是TCP?

    1.前言 对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你的第一行代码该如何编写. 从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论 ...

  2. RUDP之一 —— UDP VS TCP

    原文链接 原文:http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ 介绍 大家好,我是Glenn Fiedler, ...

  3. 第五章 运输层(UDP和TCP三次握手,四次挥手分析)

    序言   通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...

  4. 网游中的网络编程系列1:UDP vs. TCP

    原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...

  5. DNS分别在什么情况下使用UDP和TCP

    DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下使用这两种协议.     如果用wiresha ...

  6. JAVA基础学习day24--Socket基础一UDP与TCP的基本使用

    一.网络模型 1.1.OIS参考模型 1.2.TCP/IP参考模型 1.3.网络通讯要素 IP地址:IPV4/IPV6 端口号:0-65535,一般0-1024,都被系统占用,mysql:3306,o ...

  7. 初识-----基于Socket的UDP和TCP编程及测试代码

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

  8. 通信协议之HTTP,UDP,TCP协议

    1.UDP,TCP,HTTP之间的关系 tcp/ip是个协议组,它可以分为4个层次,即网路接口层,网络层,传输层,以及应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协 ...

  9. Http UDP还是TCP

    http://1024monkeys.wordpress.com/2014/04/01/game-servers-udp-vs-tcp/ 在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面 ...

  10. 游戏服务器:到底使用UDP还是TCP

    http://blog.jobbole.com/64638/ 在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面对. 一般来说你会听到人们这样说:“除非你正在写一个动作类游戏,否则你就用T ...

随机推荐

  1. JFrame自适应大小

    pack();函数调用PreferedSize(); 所以对于组件要setPreferedSize();

  2. Windows Server 2008 R2 搭建网站详细教程

    转自:http://jingyan.baidu.com/album/642c9d34098bf5644a46f71f.html?picindex=4 网上都有一些Windows Server 2008 ...

  3. Docker安装和状态查询指令

    1 .安装 Docker $ yum install -y docker-engine 2.启动docker $systemctl start docker.service 3.验证安装是否成功(有c ...

  4. 廖雪峰JavaScript练习题3

    请尝试写一个验证Email地址的正则表达式.版本一应该可以验证出类似的Email: 正则表达式: <!DOCTYPE html> <html> <head> < ...

  5. 10.31NOIP模拟赛解题报告

    心路历程 预计得分:\(100 +100 +80\) 实际得分:\(30 + 100 + 80\) 天天挂分..感觉我noip要凉.. T1不难,但是太坑了 T2不难 T3不难,但是在小机房考试脑子都 ...

  6. eclipse 出现 jar包找不到 问题记录

    同事在下载maven私服项目的时候,自动更新失败.maven 一直提示 parent 更新失败但是其他的项目都是正常的,这就奇怪了. 最后 仔细查询后,发现是  同事在下载项目时候,项目是分clien ...

  7. 如何编译 opencv3 和 opencv_contrib(Linux)

    本文以编译并安装OpenCV 3.3.0 为例,安装系统为 Linux x64 (Fedora 21),具体步骤如下: 1. 下载 Source code zip 压缩包 从下面网址,选择 openc ...

  8. 深入理解http协议的特点

    HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1.支持客户/服务器模式:2.简单快速:3.灵活:4.无连接:5.无状态. 无连接 无连接的含义是限制每次连接只处理一个请求. ...

  9. JavaWeb笔记——MVC设计模式和JavaWeb经典三层架

    1 MVC设计模式 MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(C ...

  10. 导出IIS Log列表,导出站点下虚拟目录列表

    Add-Type -AssemblyName System.Web import-module webadministration $ip = (gwmi Win32_NetworkAdapterCo ...