TCP/IP传输层协议
校验和 | 头标和数据域计算的校验和,这一项是可选的,为的 是在高可靠性的网路上尽量减少开销 |
数据 | 上层协议的数据 |
UDP为应用程序提供的是一种不可靠的、非连接的分组交付服务,UDP报文可能出现
丢失、重复、时延、乱序、连接失效的问题。但是正式由于它不提供这种可靠性,所
以它的开销很小。换句话说,UDP提供了一种在高效可靠的网络上传输数据而不用消
耗不必要的网络资源和处理时间的通信方式。使用UDP的协议包括TFTP、SNMP、DNS
DHCP。UDP很适合这种客户机像服务器发送简单服务请求的环境,因为这种服务的开
销本来就很小,如果在喀什或者结束时加入类似TCP三次握手的过程,网络的实际利用
将会变得很低。
UDP还可以用于操作信息的登录。例如,像日志服务器 syslog发送日志信息,采用UDP
不会导致多台设备向一台服务器发送日志信息而引起过载。
UDP依靠上层协议提供可靠性,包括处理报文的丢失、重复、时延、乱序、连接失效
等问题。如Real流格式媒体就是使用应用程序协议来保证数据的正确传输。
TCP
在上文中已经提到UDP为应用程序提供的是一种不可靠的、非连接的分组的交付服务。当网络硬件失效
或者负担太重时,数据段可能会产生丢失、重复、时延、乱序等现象,这些都会导致通信不正常。如果
让应用程序来负担差错检测和恢复的工作,将给程序员带来很多复杂的工作,所以使用独立的通信协议
来保证通信的可靠性是非常必要的。
传输控制协议TCP是在RFC793中定义的,它是一个面向连接的可靠的通信协议。总的来说,TCP主要提
供主要提供一下服务。
面向连接的虚电路:这有些和打电话相似,在开始传输之前,通信双方要进行三次握手来建立连接,以保
证连接的可靠性。在传输过程中,通信双方的协议模块继续进行通信,以确保正确到达(例如,接收会用
ACK应答发送方的报文段,发送方对未被应答的报文段提供重传)。如果在传输过程中通信失败了(例如传
输路径上的某个网络接口失效),通信双方都会收到错误报告。在通信结束时,通信双方会使用改进的三次
握手来关闭连接。
面向流:当通信双方传输大量数据时,TCP将数据流看作可分为字节的流,进行分段(分组),接收方将收到
的报文段按原有顺序复原。
流量控制,避免拥塞;为了提高传输效率和减少网络通信量(协议之间的通信),TCP会尽量一次传输足够多
的数据。
多路分解技术(多路复用技术):用端口号来实现。
全双工连接:TCP提供全双工连接,可以在一条连接上同时传输两个独立的、流向相反的数据流。
TCP头格式
TCP头共占用了20个字节
名称 | 描述 |
源端口 | 调用的端口号 |
目的端口 | 被调用的端口号 |
序号 | 确保数据到达的序列正确的编号 |
应答号 | 期望下一个TCP数据段 |
数据偏移(头长度) | 以32位为单位的报头长度 |
保留 | 置为0 |
编码号 | 开始、终止会话之类的控制功能 |
窗口 | 用来控制流量 |
校验和 | 头标和数据域计算的校验和 |
紧急 | 指示紧急数据的末端 |
可选项 | 当前定义项:TCP端的最大值 |
数据 | 上层协议的数据 |
建立TCP连接:三次握手
TCP是面向连接的,在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。建立
连接的过程可以却确保通信双方在发送应用数据包之前静静准备好了传送和接收数据。对于一个要建立的连
接,通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack来同步。(ack号致命希望收
到的下一个八位组的编号)习惯上将同步信号写为SYN,应答信号为ACK。整个同步的过程称为三次握手。
1)主机A发送SYN给主机B:我的序列号seq是X。
2)主机B发送SYN、ACK给主机A:我的序列号seq是X+1,应答号是X+1(等待接收第X+1号八位组)。
3)主机B发送SYN、ACK给主机B:我的序列号seq是X+1,应答号是Y+1.
通过以上3个步骤(三次握手),TCP连接连接建立,开始传输数据。任何机器上的TCP都能被动地
等待握手或主动地发起握手。一旦连接建立,数据可以对等地双向流动。
如果TCP使用1作为每次建立连接的初始化序列号,当本地系统重启后,远程系统会认为以前的连接依然存
在。所以每次连接时,主机都会随机选择一个初始化序列号,用它来辨别所传输的八位组在数据流中的位
置。然后双方要对各自的序列号进行协商,因为接收收到第一个SYN时,他并不知道这是否一个被延迟的
旧信号。所以它必须要求发送验证这个SYN。
一般情况下,TCP使用最少信息的报文段来实现三次握手,这对减少网络通信流量是有效的。总之,三次握
手使通信双方做好了传输数据的准备,并且使通信通信双方统一了初始化序列号。
关闭TCP连接:改进的三次握手
对于一个已经建立的连接,TCP使用改进的三次握手来结束通话(使用一
TCPIP传输层协 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)