Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64630
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-17 10:06
文章分类
文章存档

2015年(13)

我的朋友

分类: 网络与安全

2015-07-03 11:00:21

传输层的功能
——传输层向上面的应用层提供通讯服务。

——属于面向通信部分的最高层,同时也是用户功能中的最底层。

——传输层为运行在不同主机上的进程之间提供了逻辑通信(端到端),而网络层提供了主机之间的逻辑通信。

——只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层的功能。(即在通讯子网中没有传输层,传输层只存在于通信子网以外的主机中。)


传输层
网络层
逻辑通信 进程之间
主机之间
复用
发送方不同的进程都可以使用同一个传输层协议传送数据
发送方不同的协议的数据都可以封装成IP数据报发送出去
分用
接收方的传输层在去掉报文首部后能把数据正确交付到目的应用进程
……交付到相应的协议。
差错检验
检测报文首部和数据部分
只检验IP数据报的首部
协议
提供两种不同的传输协议 面相连的的TCP、无连接的UDP
无法同时实现两种协议(比如要么是虚电路、要么是数据报)

传输层向高层用户屏蔽了底层网络核心的细节,让应用进程看见的就好像在两个传输层实体之间有一条端到端的逻辑通信信道。(TCP:全双工可靠信道 ;UDP:不可靠信道)


——————————————————————————————————————————————————


传输层的寻址与端口

端口
——端口就是传输层服务访问点(TSAP)。
——应用层的应用进程 将数据 通过端口 向下交付给传输层。 以及让传输层知道应当将其报文段中的数据向上通过端**付给应用层相应的进程。
——IP地址和MAC地址标识的是主机,而端口标识的是主机中的进程。
——硬件端口是不同硬件设备进行交互的借口,软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。

端口号
端口号长度16bit,共65536(2^16)各不同的端口号。

服务端使用的端口号分为两种
熟知端口号  0~1023
IANA机构把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有用户都知道。
登记端口号 1024~49151
是为没有熟知端口号的应用程序使用的,必须在IANA登记防止重复。

客户端端口号 49152~65535:
——这类端口号仅在客户进程运行时彩动态选择,因此又称短暂端口号(或临时端口)。
——端口只具有本地意义,他是为了标志本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。


套接字(socket
——即通讯端点,唯一地标识了网络中的一个主机和其上的一个应用进程

套接字=(主机IP地址,端口号)


无连接服务、面向连接服务
TCP、面向连接、全双工可靠逻辑信道、不提供广播或组播服务、多开销(确认 流量控制 计时器 连接管理);适用于依赖可靠性的场合(FTP HTTP TELNET)

UDP、无连接、不可靠逻辑信道、仅提供两个附加服务(多路复用、对数据的错误检查);简单 执行速度快 实时性好 (TFTP DNS SNMP RTP)


——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————

UDP协议

UDP数据报
——只在IP数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测。
——开发者选择UDP时应用几乎是直接与IP打交道。

UDP优点
——无需建立连接,因此没有引入连接的时延
——无连接状态,不需要维护连接状态。
——分组首部开销小。
——应用层能更好地控制要 发送的数据 以及 发送时间。UDP没有拥塞控制,拥塞不会影响发送效率。某些实时性应用要求以稳定速度发送,能容忍一些数据的丢失,但不允许较大延时。适合用UDP。

不可靠交付——维护传输的可靠性需要用户在应用层完成,应用实体可以根据应用的需求来灵活设计自己的可靠性机制。

面向报文——UDP面向报文,发送方UDP对应用层交下来的报文添加首部后就下交给IP层,既不合并也不拆分,而是保留这些报文的边界。(到另一端交给应用进程时,一次交付一个完整的报文)


UDP首部格式


UDP校验
在IP数据报之前添加12个字节的伪首部。(既不向上递交也不想下传送,仅仅用来计算校验和)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


——若校验出UDP数据报是错误的,可以丢弃也可以交付上层并附上错误报告。
——这种差错检验方法检错能力不强,但是简单快速。


——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————

TCP协议

TCP特点
——面向连接
——每条TCP连接只能用两个端点(点对点)
——可靠交付服务(无差错 不丢失 不重复 有序)
——全双工通信,两端都设有发送缓存、接收缓存(用来临时存放双向通信的数据)
——面向字节流(看成一连串的无结构的字节流)

TCP报文

端口字段——运输层和应用层的服务接口(运输层分用复用功能都通过端口才能实现)

序号字段——TCP是面向字节流的,TCP是一个字节一个字节来传送的,每个字节都编上一个序号。序号字段写的是本报文段所发送的数据的第一个字节的序号

确认号——期望收到对方的下一个报文的数据的字一个字节的序号。(确认号=N,表明序号N-1为止的所有数据多已正确收到)
ACK确认位——ACK=1时,确认号才有效

数据偏移——其实是首部长度

保留字段——忽略

URG 紧急位——URG=1时表明紧急指针字段有效。
紧急指针——指出本报文段中紧急数据共有多少字节(紧急数据放在本报文段数据的最前面)


PSH推送位——当psh=1时,不等整个缓存都填满,就尽快地交付接收应用进程。

RST复位位——RST=1时,表明TCP连接中出现严重差错,必须释放链接、重新建立运输连接。

SYN同部位——SYN=1时,表示这是一个连接请求或 连接接收报文。

FIN终止位——用来释放一个连接。FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。

窗口字段——接收方让发送方设置其发送窗口的一句。单位字节。

检验和——首部和数据都检验,通过加伪首部的方式 和UDP类似。

选择字段——最初只规定了一种选项MSS。

填充字段——为了使整个首部长度是4字节的整数倍


——————————————————————————————————————————————————


TCP连接管理
TCP连接的三个阶段
——连接建立→数据传送→连接释放
——TCP连接的端口叫套接字socket

采用客户/服务器方式
——主动发起连接建立的应用叫:客户机(Client)。
——被动等待连接建立的应用进程叫做服务器(Server)。

TCP连接建立的过程要解决的三个问题
——让双方都能够确知对方的存在。
——允许双方协商一些参数(最大窗口值……时间截选项 ……服务质量……)。
——能够对运输实体资源进行分配。


TCP连接的建立:三次握手

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
①请求报文段
seq=x(连接请求报文不携带数据,但要消耗一个序号)
②同意建立连接,像客户机发挥确认,并为改TCP连接分配TCP缓存和变量。
③客户机收到确认报文,想服务器给出确认,然后给该连接分配缓存和变量。(该报文可携带数据,如果不携带则不消耗序号)
(服务端的资源是在完成二次握手时分配的,客户端的资源是在完成第三次握手时分配的,这使得服务器易于收到SYN洪泛攻击。)


TCP连接的释放
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.客户端打算关闭连接,向TCP发送一个连接释放报文段,并停止再发送数据,主动关闭TCP连接
seq=前面已传过的数据的最后一个字节的序号+1(FIN报文段不携带数据也要消耗一个序号)

TCP时全双工的,可以想象成一条TCP连接上有两条数据通路,第一步结束后就关闭了一条数据通路,不过对方还可以发送数据。


2.服务器回复确认,然后这个方向的连接就释放了。此时TCP处于关闭状态。(从服务器到客户机这个方向的连接还没关闭)


3.服务器→客户机,通知TCP释放链接。


4.客户机回复确认,等待计时器,计时2MSL后 A进入连接关闭状态。

——————————————————————————————————————————————————

TCP可靠传输
TCP可靠数据传输服务——保证接收方进程从缓存区读取的字节流与发送方发出的字节流是完全一样的。


TCP首部序号——用来保证数据能有序提交给应用层。(序号建立在传送的字节流之上,而不是报文段之上)
——TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

TCP首部确认号——期望收到对方的下一个报文段的数据的第一个字节的序号。


默认使用累计确认——TCP只确认数据流中 至 第一个丢失字节为止的字节。


超时重传——每发送一个报文段,就对这个报文段设置一次计时器。规定时间内没收到确认,就要重传。
超时计时器设置的超时重传时间的计算:
往返时间(Round -TripTime )RTT
加权平均往返时间 RTTs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0≤α<1;[RFC 2988]推荐值为0.125.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RTT的偏差加权平均值—RTTd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

超时计时器设置的 超时重传时间(Retransmission Time-Out,RTO),应略大于RTTs。
计算公式:RTO=RTTs+4*RTTd

冗余确认
超时触发重传存在一个问题是超时周期过长,
TCP规定每当 比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。
当发送方收到对同一个报文段的3个冗余ACK时,就认为在这个被确认的报文段之后的报文段已经丢失。(然后执行重传)
这种技术通常称为快速重传。

——————————————————————————————————————————————————
TCP流量控制









——————————————————————————————————————————————————




——————————————————————————————————————————————————





阅读(1796) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~