《图解TCP/IP》(三)之TCP与UDP
来源:互联网 发布:wifi共享精灵for mac 编辑:程序博客网 时间:2024/06/12 20:20
1. 传输层的作用
1.1. 传输层的定义
IP首部有个协议字段,用来标识传输层协议,识别数据是TCP的内容还是UDP的内容。同样,传输层,为了识别数据应该发给哪个应用也设定了这样的编号,即端口。
1.2. 通信处理
应用协议大多以C/S形式运行,即服务端需提前启动服务,监听某个端口,当客户端往该端口发送数据时,可以及时处理请求。
服务端程序在UNIX系统中称为守护进程,例如HTTP的服务端程序为httpd;ssh的服务端程序为sshd。UNIX中不必要逐个启动这些守护进程,而是由超级守护进程inetd(互联网守护进程)启动,当收到客户端请求时会创建(fork)新的进程并转换(exec)为httpd等各个守护进程。根据请求端口分配到对应的服务端守护进程上处理。
1.3. TCP和UDP
1.3.1. TCP
TCP是面向连接、可靠的数据流。流就是不间断的数据结构,可理解为水管中的水流。虽然可以保证发送顺序,但犹如没有间隔的发送数据流给接收端。例如:发送10次100字节的消息,接收端可能会收到一个1000字节连续不断的数据。TCP为实现可靠传输,实行“顺序控制”和“重发控制”;还具备“流量控制”、“拥塞控制”、提高网络利用率等。TCP可以类比为“打电话”,有去有回。
1.3.2. UDP
UDP是不具备可靠性的数据报协议,可以确保发送消息的大小,但不能保证消息一定到达,应用有时会根据自己的需要进行重发处理。UDP可以类比“发短信”,有去无回。
1.3.3. 套接字
应用在使用TCP或UDP时会用到系统提供的类库,即API(应用编程接口),通信时会用到套接字(socket)的API。应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。
2. 端口号
2.1. 端口号的定义
把数据传输比作快递传递;IP地址就像你的家庭地址;那么端口号相当于你家具体的收件人;知道了家庭地址和收件人才能将快递准确送达。
2.2. 根据端口号识别应用
2.3. 通过IP地址、端口号、协议号进行通信
5个信息唯一标识一个通信:源地址IP、目标地址IP、协议号、源端口号、目标端口号。
2.4. 端口号如何确定
2.4.1. 标准既定的端口号
该方法也叫静态方法,是指每个应用程序都有其指定的端口号。例如HTTP、FTP等应用协议使用的端口号,这类端口号称为知名端口号,一般由0-1023的数字分配而成。除知名端口号外,还有一些端口号也被正式注册,分布在1024-49151的数字之间。这些端口可用于任何通信用途。
2.4.2. 时序分配法
该方法也叫动态分配法,服务端有必要确定监听端口号,但接受服务的客户端没必要确定端口号。客户端可以不用自己设置端口号,由操作系统进行分配。操作系统为每个应用程序分配互不冲突的端口号。例如,新增一个端口号则在之前的端口号上加1,动态分配的端口号取值范围:49152-65535。
3. UDP
UDP:User Datagram Protocol的缩写,提供面向无连接的通信服务,在应用程序发来数据收到那一刻则立即原样发送到网络上。即使出现丢包也不负责重发,包出现乱序也不能纠正。
UDP可以随时发送数据,本身处理简单高效,但不具备可靠性,适合以下场景:
- 包总量较少的通信(DNS、SNMP等)
- 视频、音频等多媒体通信(即使通信)
- 限定于LAN等特定网络中的应用通信
- 广播通信(广播、多播)
4. TCP
TCP:Transmission Control Protocol (传输控制协议),TCP实现了数据传输时的各种控制功能,可以进行丢包重发,乱序纠正,控制通信流量的浪费。
待续。。。
- 《图解TCP/IP》(三)之TCP与UDP
- (六)TCP与UDP--图解TCP/IP读书笔记
- tcp/ip 与 udp
- TCP UDP与IP
- TCP/IP之UDP
- TCP/IP(三):传输层TCP与UDP
- 图解TCP/IP 读书笔记(三)
- 《图解TCP/IP》(一)之TCP/IP基础
- TCP/IP学习之 TCP与UDP的 区别
- 图解TCP/IP笔记(三)
- TCP/IP协议(三)——UDP与TCP的区别
- TCP/IP(四):TCP 与 UDP 协议简介
- TCP/IP(四):TCP 与 UDP 协议简介
- TCP/IP(5)--TCP与UDP
- TCP/IP笔记(六)TCP与UDP
- TCP/IP笔记(六)TCP与UDP
- 2017-02-11号 图解TCP/IP协议 第6章 TCP与UDP
- 图解TCP/IP之概述
- 三种方式配置Tomcat虚拟目录映射
- quartz学习笔记7:trading
- Java 集合类及其方法
- 上拉刷新下拉加载(多条目)
- C#--简单工厂设计模式
- 《图解TCP/IP》(三)之TCP与UDP
- python中with语句的使用
- SPOJ QTREE Query on a tree 边权LCT
- python3 动态添加方法的3种情况
- vb.net 教程 20-3 控制Ie浏览器 7
- tensorflow conv2d的padding解释以及参数解释
- jQuery选择器的总结
- 试试吧
- 细说虚拟机栈