网络通信(Telematik)-传输层协议(Transportprotokolle)1
来源:互联网 发布:儿童英语音乐软件 编辑:程序博客网 时间:2024/06/05 15:04
一点补充知识
包(Paket)
包是网络数据的传输单位,他由目标数据和辅助信息组合而成:
第N层的数据单元将被套在第N-1层的数据单元的目标数据中
在信息传输是包与包之间是互不相关的
缓存(Puffer)
Router处理数据包需要时间,因此不能保证每个到达的数据包都会马上被处理,为了存放这些暂时没被处理的数据包,Router里面设计了缓存(Putter)
根据等待队伍的长短,每个包等待的时间都不一样
当缓存区太小,那么多余的到达的数据包将直接被扔掉
TCP
建立TCP连接
tcp建立连接的方法俗称三次握手:
1.Client发出连接请求TConReq(SYN=1,seq=client_isn,…)
//seq:sequenzdummer isn:Initial Sequenznummer
2.Server接收到请求信息之后,向client发出回复信息
TConCof(SYN=1,ACK=1,seq=server_isn,ack=client_isn+1,…)
3.Client回复Server的信息,连接顺利建立
ACK(SYN=0,ACK=1,seq=client_isn+1,ack=server_isn+1,…)
SYN(Synchronize)=1表示请求同步
ACK(Acknowledgment)=1表示确认信息
seq表示发送的包的序列号
ack表示希望获得的下一个包的序列号,当ack=x+1时,表示seq=x的包,我已经收到,所以一次把seq=x+1的包给我吧
那么一个小问题,为什么需要seq呢??
另外建立联系的请求(request),确认(confirm)包中并不包含有Nutzdate
于是另外一个小问题,什么时候 开始允许Client和Server之间传送Nutzdate呢??
另外,如果因为延迟的原因Server同时收到两个相同seq的包,又该如何??
还有,如果Client先后发出两个request,但是最新的request因为延迟拖了一段时间才到达Server,那么会发生什么事呢??
//注ack的含义,以及实际上他是由谁决定的
连接解除
解除连接即可由Client,也可以由Server发起,以Client为例,他要经以下四步:
1.Client发出请求TDisReq(FIN=1,seq=i,ack=j,…)
2.Server回复确认信息TDisCnf(FIN=0,ACK=1,seq=j,ack=i+1,…)
3.Server发出解除请求TDisReq(FIN=1,seq=j,ack=i+1,…)
4.Client回复确认信息TDisCnf(FIN=0,ACK=1,seq=i+1,ack=j+1,…)
5.等待连接解除
TCP连接的标示符(Identifikation einer TCP-Verbindung)
一个TCP连接由以下四个值确定:
1.源IP地址(Quel-IP-Adress)
2.目标IP地址(Ziel-IP-Adresse)
3.源TCP端口(Quell-TCP-Port)
4.目标TCP端口(Ziel-TCP-Port)
那么当一个终端和同一个Server有多个连接时会怎么样呢??
TCP数据包
options
存在意义在于方便功能扩展,在TCP头文件中,每个Option都会被编译成TLV格式(Type-Length-Value),TCP头文件总长最多60B,也就是说Option得数量也是有限制的
option的作用很大,其中一个好玩的就是,他可以用来表示TCP包的情绪,详见RFC 5841
流控制(FlussKontrolle)
目的:防止接收者(Empfaenger)过载
Window:(Empfangsfenster)TCP中得window用来管理缓存空间(Pufferplatz)
window里包括有两个变量:
RevWindow:目前还空闲的缓存空间大小
RevBuffer:用于接收数据的总得缓存空间的大小
Zero Window Probing
问题:零空间问题
A想向B发送信息,但是B回复说我的Puffer满了(RevWindow=0),那么问题来了,B不会主动下A发送信息,而A,由于被告知B的puffer满了,同样也不会向B发送信息。那么当B有空位是A讲如何获得这个信息呢??
要求:就算B满了,A也应该向B发送一个1B的信息。以此来了解B是否有空余空间
Persist-Timer被用于控制Zero Window Probing
扩展问题
1.在一个TCP连接中Window得大小能否改变??
2.当A向B发送信息时,Window的大小由谁决定??
3.序列号seq的大小必须是以一递增的吗??
攻击TCP连接
SYN Flooding
使用伪造的源IP地址发送大量的SYN连接建立请求信息
经典的例子是DoS-Attacke(Denial-of-Service)
**对策:**SYN-Cookies
//具体还没弄明白 待修改
- 网络通信(Telematik)-传输层协议(Transportprotokolle)1
- 网络通信(Telematik)-传输层协议(Transportprotokoll)2
- 网络层协议和传输层协议
- 网络层其他传输协议
- UNIX网络编程笔记(1)—传输层协议
- UNIX网络编程1:传输层协议TCP、UDP、SCTP
- linux网络协议栈(六)传输层 (1)传输层基本框架
- IP 网络层传输协议学习心得
- 网络传输协议的七层架构
- 传输层(1)-TCP协议
- 传输层-1、UDP协议
- OSI七层网络协议之传输层
- linux网络协议栈(六)传输层 (2)UDP协议 1)创建和bind
- 网络传输层协议中,基于TCP/IP协议…
- linux网络协议栈(六)传输层 (3)UDP协议 5)传输层框架小节
- 【JAVA开发之网络开发2-1】网络基础之物理层与传输协议层
- 网络协议概述:物理层、连接层、网络层、传输层、应用层详解
- 实例详解 网络协议概述:物理层、连接层、网络层、传输层、应用层
- 01背包
- java 单例模式 几个实现方法
- 洛谷2654 原核生物培养
- Tomcat端口占用相关的问题
- c++中怎么把string转化为数组
- 网络通信(Telematik)-传输层协议(Transportprotokolle)1
- 逆矩阵在3D游戏向量中的重要作用
- AChartEngine 简介
- Ajax 简介(一)
- [NOIP 2007]统计数字
- LeetCode Implement Stack using Queues 栈&队列
- python 类的继承,内置函数(1)
- 细数JDK里的设计模式
- [NOIP 2005]谁拿了最多奖学金 模拟