运输层协议TCP和UDP
运输层协议TCP和UDP
一、用户数据报协议 UDP
1.1.UDP 概述
- UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
- 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
1.2.UDP的主要特点
- UDP 是无连接的,即发送数据之前不需要建立连接。
- UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
- UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。
- UDP 支持一对一、一对多、多对一和多对多的交互通信。
UDP 的首部开销小,只有 8 个字节。
UDP 是面向报文的

1.3.UDP 首部的格式

- 可以看到UDP的首部没有“编号”字段,因为UDP协议只需要传输一个数据包,所以不需要编号。

- 用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。

- 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
1.4.计算 UDP 检验和的例子

明确需要计算“校验和”来检验UDP报文的准确性即可。
二、传输控制协议TCP
在网络中传输数据,有的数据比较小,一个数据包就可以传完,这时使用UDP协议;有的数据比如电影500M比较大,这就要求把数据分段传输,分成的每个段就是一个数据包,依次传输和接收。传输的过程中有可能丢包,这就导致某些数据包缺失接收端无法打开整个文件,但是网络层不负责保证可靠传输,这就要依靠传输层的TCP协议来实现可靠传输。
再者,TCP协议还要有一个流量控制的功能,简单点说,服务器功能强大发数据很快,接收端无法及时处理就会给服务器发信息,告诉服务器减缓发送数据的速度。
还必须要有避免网络拥塞的功能。
2.1.TCP概述
TCP 是面向连接的运输层协议。即传输数据前需先建立连接确保网络通畅。
每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一,一个发一个收)。
TCP 提供可靠交付的服务。
TCP 提供全双工通信,A与B通信,A发数据给B,B要给A发送返馈信息,表示数据是否收到。
面向字节流。
2.2.TCP面向字节流的概念

应当注意:
- TCP 连接是一条虚连接而不是一条真正的物理连接。
- TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。
- TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
- TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。
2.3.TCP 的连接
- TCP 把连接作为最基本的抽象。
- 每一条 TCP 连接有两个端点。
- TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。
- 端口号拼接到(contatenated with) IP 地址即构成了套接字。即端点=IP地址+端口号。

- 每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:

socket 多种不同的意思
- 应用编程接口 API 称为 socket API, 简称为 socket。
- socket API 中使用的一个函数名也叫作 socket。
- 调用 socket 函数的端点称为 socket。
- 调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket。
- 在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。
运输层协议TCP和UDP的更多相关文章
- 运输层协议--TCP及UDP协议
TCP及UDP协议 按照网络的五层分级结构来看,TCP及UDP位于运输层,故TCP及UDP是运输层协议.TCP协议--传输控制协议UDP协议--用户数据报协议 多路复用及多路分解 图多路复用及多路分解 ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- 浅谈传输层协议TCP和UDP
在当今因特网的层次结构中,传输层的协议主要有两种,其一为Transmission Control Protocol,即TCP:其二为User Datagram Protocol,即UDP. 1.TCP ...
- 网络编程协议(TCP和UDP协议,黏包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- 网络编程协议(TCP和UDP协议,粘包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- 常用传输层协议(tcp/ip+udp)与常用应用层协议简述(http)
一.计算机网络体系结构 二.TCP与UDP差异 1.TCP是面向连接的可靠传输,UDP是面向无连接的不可靠传输 面向连接表现在3次握手,4次挥手:可靠传输表现在未进行4次挥手时的差错重传,超时重传: ...
- TCP/IP中的传输层协议TCP、UDP
TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...
- 传输层协议TCP和UDP分析
分析所用软件下载:Wireshark-win32-1.10.2.exe 阅读导览 1. 分析应用TCP协议,以及TCP链接管理 2. 分析应用UDP协议 分析要求 (1)TCP部分: 学习3CDaem ...
- 01网络编程(基础知识+OSI七层协议+TCP与UDP)
目录 01 网络编程 一.软件开发架构 1.1 CS架构 1.2 BS架构 二.网络理论前戏 2.1 简介 2.2 常见硬件 三.OSI七层协议(五层) 3.1 七层协议 3.2 五层协议 3.3 知 ...
随机推荐
- C/C++中开平方函数sqrt()的用法
开平方使用sqrt()函数 使用方法: 包含于math.h头文件 sqrt(float * number),返回number的开平方数,返回值为浮点型 sqrt使用时大多需要要强制类型转化,因为sqr ...
- Flask pythn Web 框架总结
Flask pythn Web 框架总结 一, Flask 介绍 Flask 是一个基于Python 实现的web 开发的'小型轻框架' 1. flask介绍 Flask是一个基于Python实现的w ...
- 编译原理_P1004
龙书相关知识点总结 //*************************引论***********************************// 1. 编译器(compiler):从一中语言( ...
- 2018-10-09-Pser
title date tags layout Pser 2018-10-09 杂谈 post ### 踏雪无痕
链接:https://ac.nowcoder.com/acm/contest/1077/L 题目描述 Bessie and the herd, N (1 <= N <= 2,200) co ...
- signal——信号集
1.信号集 每个进程都有一个信号屏蔽字,它规定了当前要阻塞递送到该进程的信号集.对于每种可能的信号,该屏蔽字中都有一bit位与之对应.信号数可能会超过一个整型数所包含的二进制位数,因此POSIX.1 ...
- 吴裕雄--天生自然python学习笔记:python用 Selenium 组件实现浏览器操作自动化
一般情况下,我们都是用手工操作的方式来对浏览器进行各种操作 . 实际上, 只要我们安装一个自动化操作组件, Python 就可以让我们的很多操作实现自动化 . Selenium 组件 在开发网页时,用 ...
- OpenCV 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体
#include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...
- 认识shell
博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 认识shell 一.由来 第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念他所以就称为 ...