UDP与TCP

1.背景介绍

先介绍下背景

TCP/IP是什么?

TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议等等。同时是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。 TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!
TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。
TCP/IP协议集包括应用层,传输层,网络层,网络访问层。
其中应用层包括:
超文本传输协议(HTTP):万维网的基本协议.
文件传输(TFTP简单文件传输协议):
远程登录(Telnet),提供远程访问其它主机功能,它允许用户登录
internet主机,并在这台主机上执行命令.
网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等.
域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址.
其次网络层包括:
Internet协议(IP)
Internet控制信息协议(ICMP)
地址解析协议(ARP)
反向地址解析协议(RARP)
最后说网络访问层:网络访问层又称作主机到网络层(host-to-network).网络访问层的功能包括IP地址与物理地址硬件的映射,以及将IP封装成帧.基于不同硬件类型的网络接口,网络访问层定义了和物理介质的连接.
当然我这里说得不够完善,TCP/IP协议本来就是一门学问,每一个分支都是一个很复杂的流程,但我相信每位学习软件开发的同学都有必要去仔细了解一番。

2.知识剖析

先来看看今天的主角

TCP/IP协议的四层结构

请看图例
在这里插入图片描述

OSI七层参考模型TCP/IP四层的关系:

数据包说明:

IP层传输单位是IP分组,属于点到点的传输;TCP层传输单位是TCP报文段,属于端到端的传输
在这里插入图片描述

第一层:链路层

包括操作系统中的设备驱动程序、计算机中对应的网络接口卡

第二层:网络层

网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。

特别注意:此时的IP包是不安全的,IP协议不会管送没送到

第三层:传输层

在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP和用户数据报协议UDP.

TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端, 它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。 TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据.

UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。

第四层:应用层

TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。这一层主要的代表有DNS域名解析/http协议

运输层: tcp/udp

UDP特点

1.面向无连接。发送数据前不需要建立连接

2.尽最大努力交付。即不保证可靠交付

  1. 面向报文。对于应用层交下来的报文,既不合并也不拆分,添加首部后直接交付给IP层

4.没有拥塞控制,网络出现拥塞不会使源主机发送速率降低,这对于某些实时应用是很重要的。tcp在网络拥塞是,依靠滑动窗口机制可以告诉发送方减缓发送速率

5.首部开销小,只有八个字节,比tcp的20个字节要短(20-60).

首部格式

利用首部格式可以较好的理解协议
在这里插入图片描述

TCP主要特点

1.面向面向连接的运输层协议。应用程序在使用tcp协议之前,要先建立tcp连接,数据传输完毕后,也要释放连接。

应用程序间的通信像是,通话前要先拨号建立连接,通话结束后要挂机释放连接。

  1. 提供可靠交付。无差错,不丢失,不重复,并按序到达。

3.采用全双工通信。通信双方在任何时候都可以发送和接受数据,且通信双方都设有发送缓存和接受缓存,用来临时存放双向通信的数据。

4.面向字节流。应用程序交下来的是数据块,但tcp把他们看成是无结构无意义的字节流

首部格式

利用首部格式可以较好的理解协议
在这里插入图片描述

3.常见问题

如何建立TCP/IP连接

到达目标地址的IP包如何检验完整性

4.解决方案
建立TCP/IP的过程就是要讲的三次握手。

即三次握手就是为了解决连接的问题

建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

IP包有固定的报文格式,报头有所需要参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值