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. 最近使用日期控件时,用到了My97DatePicker控件,单日期控件,记录一下

    以上是使用时的效果,可以自己设定日期有效区间,如下图: 对于起始日期和终止日期的控制如下: <td> <label >起始日期:</label> <input ...

  2. Google安装postman插件

    1.保证网上商店可用 http://jingyan.baidu.com/article/48a42057ea53a1a9242504c1.html

  3. mysql(什么是关系型数据库?)

    关系型数据库:建立在关系模型上的数据库. 关系模型:当将日常生活中的实体(学生),和实体的属性(学生的学号,姓名)保存到数据库中,应该如何处理实体结构. 1.数据结构可以规定,同类数据,结构一致.就是 ...

  4. 小白学flask之路由,反向路由,路由参数

    # -*- coding: utf-8 -*- from flask import Flask, request, url_for app = Flask(__name__) @app.route(& ...

  5. javascript实现文本框标签验证

    < !DOCTYPE html > <html lang = "en" > <head > <meta charset = "U ...

  6. js权威指南学习笔记(二)表达式与运算符

    1.数组初始化表达式 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充undefined.如:       2 2           1 var arr = [1,,,,,6]; 2 ...

  7. [转]ggplot2用法简单介绍

    简介 ggplot2包是基于Wilkinson在<Grammar of Graphics>一书中所提出的图形语法的具体实现, 这套图形语法把绘图过程归纳为data, transformat ...

  8. idea导入项目报错:文档中根元素前面的标记必须格式正确

    今天从git上面导入项目之后,由于是上周刚刚提交过的,本地也没有什么修改,于是就从gitlab上面直接下载下来了.可是项目启动时候,报错了... 文档中根元素前面的标记必须格式正确 想想 原来是上次提 ...

  9. Batch Normalization 笔记

    原理 BN的效果 Why BN works? 原理 输入层可以归一化,那么其他层也应该可以归一化.但是有个重要的问题,为什么要引入beta和gamma. 为什么要引入beta和gamma 不总是要标准 ...

  10. impala安装笔记(Ubuntu)

    1.Override 1.With Impala, you can query data, whether stored in HDFS or Apache HBase – including SEL ...