TCP和UDP协议

转载 2018年04月17日 16:31:09

传输层

传输层是为应用进程间提供逻辑通信。

1.1. UDP协议

1.1.1. UDP的主要特点

(1) UDP是无连接的,在传输数据之前不需要建立连接。

(2) UDP是尽最大努力交付的。UDP不提供可靠交付。

(3) UDP是面向数据报的。

(4) UDP支持一对一,一对多,多对一,多对多通信。

(5) UDP不提供拥塞控制。

(6) UDP首部开销小只有8个字节。

 

1.1.2. UDP的首部格式

源端口

目的端口

长度

校验和


源端口:在需要对方回信时选用,不需要时全置0

目的端口:在终点交付时使用

长度:UDP报文的长度(包括首部和数据字段)

校验和:检测用户数据在传输时是否出现错误,出现就丢弃。

 

1.2. TCP协议

1.2.1. TCP的主要特点

(1) TCP是面向连接的,在传输数据之前需要建立连接。

(2) TCP是可靠传输的。

(3) TCP只支持一对一通信。

(4) TCP是面向字节流的。

(5) TCP有拥塞控制

(6) TCP是全双工通信

(7) TCP首部长度是20个字节

1.2.2. TCP的首部格式

源端口号

目的端口号

序号

确认序号

数据偏移

保留

URG

ACK

PSH

RST

SYN

FIN

窗口

检验和

紧急指针

选项(长度可变)

填充

 

(1) 源端口号和目的端口号与UDP一样。

(2) 序号:TCP连接中传送的字节流,每一个字节都按序号编号。

(3) 确认序号:期望收到对方下一个报文段的第一个字节的序号。

(4) 数据偏移:这个字段实际指出了TCP报文首部长度。

(5) URG:紧急标志位,表示此报文段中有紧急数据,应该快速发送。

(6) ACK:确认序号有效标记位。

(7) PUSH:推送标志位,当两个进程进行通信时,有时需要一端输入一个命令时,立即能够收到对方的响应。

(8) RST:复位标志位,RST=1,表示TCP连接中出现严重差错,需要释放连接,然后重新建立连接。

(9) SYN:在连接建立时用来同步序号

(10) FIN:用来释放连接。

(11) 窗口:指的是对方的接收窗口。接收窗口,是发送方设置发送窗口的依据。

1.2.3. 可靠传输的原理

通信双方,发送方A,和接收方B

停止等待协议:停止等待协议就是,每发送完一个分组就停止发送,等待对方的确认。在确认收到后再发送下一组。

A. 无差错情况:发送方A发送分组M1后停止发送,等待接收方B发送确认信号。接收方B接受到分组M1后,向发送方A发送确认信号。发送方A接受到B的确认信号后,继续发送分组M2

B. 出现差错情况:接收方B接受到发送A的分组M1,检测出了差错,就丢弃该报文什么也不做。发送方A等待接收方B的确认信息,A只要超过一段时间没有收到接收方B的确认信息,就重新发送分组M1

C. 确认丢失和确认迟到:接收方B发送的对M1确认信息丢失了,A在超时计时器到期后就重新发送M1分组。接收方B接收到该重复的分组M1将该重复分组丢弃,并且向A发送确认信息。

 

滑动窗口协议:ARQ

位于窗口内的分组可以被连续的发送出去,而不需要等待对方的确认。连续ARQ协议规定,发送方每收到一个确认信息就向前移动一个分组的位置。接受方一般采用累积确认的方式,不必对收到的分组注意发送确认,而是在接到几个分组后,对按序到达的最后一个分组发送确认信息,表示这个分组之前的所有分组都已到达。

1.2.4. TCP的流量控制

流量控制是让发送方的速率不要太快,让接收方来得及接收。

TCP使用滑动窗口进行流量控制,接收方会向发送方发送一个接收窗口大小。发送方发送的窗口不能超过接收方给出的接收窗口。

 

1.2.5. TCP的连接和释放

TCP连接的建立:三次握手

1) 客户端向服务端发送连接请求,将同步位SYN=1,同时讲seq=x。这时客户端进入SYN-SENT

2) 服务端接收到客户端的请求,如果同意建立连接,则向服务端发送确认报文。将SYN=1,ACK=1,ack=x+1,seq=y。服务端进入SYN-RCVD

3) 客户端接收到服务端的报文,还需要向客户端确认。将ACK=1,ack=y+1,seq=x+1。连接建立完成,客户端和服务端进入ESTABLISHED

 

为什么需要客户端第三次发送确认?

防止失效的信息重新请求连接。客户端向服务端发送连接请求,请求报文在某个网络节点阻塞,客户端超时重传新的连接请求,并建立连接,传输数据完成后。失效的请求报文到达客户端,如果没有第三次客户端的确认。则服务器建立连接后,客户端没有资源传输,这样空的连接就会浪费资源。

 

TCP连接的释放:四次挥手

1) 客户端向服务端发送连接释放报文,并停止发送数据。将FIN=1,seq=u(等于前 面发送的最后一个字节的序号加1)。进入FINAL-WAIT-1

2) 服务端接受到报文后,发送确认信号,将ACK=1,ack=u+1,seq=v(等于其那面接 受到最后一个字节的序号加1)。进入CLOSE_WAIT状态。这时客户端到服务端 的连接断开。客户端接受到确认信号后进入FINAL-WAIT-2状态。等待服务端 发送连接释放信号。

3) 服务端向客户端发送连接释放报文,将SYN=1ack=u+1,seq=wLAST-ACK

4) 客户端接收到服务端的了报文后,向客户端发送确认。将ACK=1,ack=w+1,seq=u+1.进入TIME-WAIT状态。


tcp/udp/http协议详解

转载出处是: http://blog.chinaunix.net/uid-26833883-id-3627644.html   TCP、UDP、IP 协议分析 2013-04-2...
  • u013676711
  • u013676711
  • 2016-08-10 16:48:55
  • 740

面试题:TCP协议与UDP协议的区别

本文转载自:点击打开链接 TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必...
  • qq_18425655
  • qq_18425655
  • 2016-07-19 14:43:16
  • 4080

计算机网络之TCP协议与UDP协议

运输层向它上面应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。应用层不同进程的...
  • u012152619
  • u012152619
  • 2015-09-21 15:37:10
  • 3682

TCP/IP协议与UDP的区别

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,...
  • qq_36945593
  • qq_36945593
  • 2017-04-23 19:26:59
  • 352

通信协议-HTTP/TCP/UDP

TCP HTTP UDPHTTP/TCP/UDP 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务...
  • makenothing
  • makenothing
  • 2015-11-29 22:33:27
  • 3526

TCP和UDP协议的对比

UDP是一个简单的,不可靠的数据报协议。TCP是一个复杂的、可靠的字节流协议 UDP的特点如下: (1)无链接 (2)UDP使用尽最大努力交付,不保证可靠性 (3)UDP是面向报文的,UDP对应用...
  • yyf_it
  • yyf_it
  • 2016-08-14 22:03:58
  • 1615

TCP协议和UDP协议简单实例

TCP协议创建步骤: import java.net.*; import java.io.*; /** 客户端负责发送数据: 步骤: 1、创建Socket对象,绑定IP和端口号 2、设置...
  • u011521890
  • u011521890
  • 2015-07-08 09:52:33
  • 1331

TCP对应的协议和UDP对应的协议

TCP和UDP的区别? TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。 TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。 TCP注重数据...
  • xinianbuxiu
  • xinianbuxiu
  • 2016-09-27 23:02:56
  • 1413

TCP和UDP各包含了哪些协议

使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 (2) Tel...
  • csw_100
  • csw_100
  • 2010-08-31 02:43:00
  • 12261

对问题:Http是TCP协议还是UDP协议的回答

1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层...
  • liudan217
  • liudan217
  • 2016-06-24 15:14:57
  • 1364
收藏助手
不良信息举报
您举报文章:TCP和UDP协议
举报原因:
原因补充:

(最多只允许输入30个字)