计算机网络之传输层总结
来源:互联网 发布:linux配置samba服务器 编辑:程序博客网 时间:2024/06/06 01:51
提供进程间通信,host to host,路由器与交换机无法干涉。
端口号介绍
端口号范围:
0-65535 16位 0-1023周知端口号
端口号列表:
TCP 21端口:FTP 文件传输服务
TCP 23端口:TELNET 终端仿真服务
TCP 25端口:SMTP 简单邮件传输服务
UDP 53端口:DNS 域名解析服务
TCP 80端口:HTTP 超文本传输服务
TCP 110端口:POP3 “邮局协议版本3”使用的端口
TCP 443端口:HTTPS 加密的超文本传输服务
TCP 1521端口:Oracle数据库服务
TCP 1863端口:MSN Messenger的文件传输功能所使用的端口
TCP 3389端口:Microsoft RDP 微软远程桌面使用的端口
TCP 5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口
UDP 5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口
TCP 5000端口:MS SQL Server使用的端口
UDP 8000端口:腾讯QQ
TCP 25端口:SMTP 25仔
TCP 110端口:POP3 报警110 police
UDP[8bytes]
不可靠,非面向连接,速率不可调节
二元组(源端口,目的端口)
报文结构
16bits source port
16bits destination port
16bits length 头和数据总和
16bits checkSum 所有16bits相加,溢出忽略,得到最终值进行反码运算
在服务端检测只需全相加为 全一
应用好处:
- 应用层能更好控制发送的数据和发送时间
数据将会立刻被打包成报文段,传到网络层
适合实时传输的应用,容忍小错误
TCP的拥塞机制减慢速度 - 无需建立连接
TCP三次握手耗时 - 无连接状态
无需维持连接状态
TCP需要提供可靠数据连接与拥塞机制 - 分组头部开销小
TCP[20bytes]
可靠,面向连接,相当于GBN+SR
累计确认:
TCP只确认数据流至第一个丢失字节为止的字节
快速重传:
收到3个重复ack,重新传送
四元组(源IP地址,源端口,目的IP,目的端口)
报文结构:
source port: 16bits
des port: 16bits
seq num: 32bits 按字节为单位标注
ack num: 32bits 【为客户端发过来的seq+1】
header length: 4bits 仅记录报文头部的大小,单位为word(32bits)
Flag field: (以下均1bit)
1)URG 紧急传输使用
2)ACK 检验ack合法性
3)PSH 需要尽快传输到应用层
4)RST 在三次握手时,告诉请求方没有相应的端口号
5)SYN 在三次握手时,请求发问接收方存在不存在
6)FIN 四次挥手时,来告诉对方我要释放资源啦,其实有一段缓冲时间等接受到才正式释放资源的
receive window: 16bits 接受窗口大小,跟拥塞控制有很大关系
checksum: 16bits
urgent data pointer: 紧急数据指针,直接指向紧急数据开始处(byte计算)
流量控制vs拥塞控制
流量控制:对于发送的数据包的速率
根据buffer来控制发送速率,以及接受速率
已发送-已经ack <= rwnd
已接收-已经交付给上层 <= rwnd
rwnd = Buffer - data in buffer
【注意,当rwnd为0时,客户端也是需要不断发送请求,以确保收到ack来更新客户端的buffer状态】
拥塞控制:对于window size变化来说
慢启动:
一个transmission time翻倍,1→2→4→8→16【16为阙值,达到就进入拥塞避免】
拥塞避免:16→17→18→19→20
当dupAck>=3
快速恢复:
TCP Reno: 20→20/2+3=13→拥塞避免
TCP Tahoe: 20→1→慢启动
三次握手
- 在么在么
- 我在,我准备好咯,你呢【准备资源中,如果没3,则可能是SYN泛洪攻击】
- ok,我们可以通信啦
四次挥手
- A:我要跟你分手了噢
- B:我还没充分准备,请接受我的道歉信,A:婆婆妈妈的,我先看一下道歉信,哼
- B:我已经尽力了,只能跟你分了
- A:就知道是这个结果,赶紧定个闹钟睡觉,明天又是完美的一天
B:已死心。。
可靠数据传输协议
Stop and wait:
rdt1.0 天真无邪,只有等待or发送
rdt2.0 需要得到确认,引入ack nak 和checksum 称为“停-等”协议
实现 自动重传请求协议:
1. 差错检测
2. 接收方反馈
3. 重传
rdt2.1 针对nak ack分组受损
引入 sequence number,1bit 标识状态
rdt2.2 移去nak,直接使用ack就能判断了
rdt3.0 引入timer,不用通过重复ack回传信息,直接time over重传
流水线协议:
GBN(Go-Back-N)
遇到超时的包直接重传window内的所有包,接收方对seq进行校对,若没满足连续,则会丢弃不交付给上层,但会发送上一次发送的ack,计时器是对全局使用的,且接收方不用缓存任何分组,都属于一次性交付
SR(Selective-repeat)
每个分组有自己的定时器,发送方接收方均有window,接收方具有缓存机制,分组可以连续交付【断→buffer的】。
window size <= size of seq num space/2;
注意:TCP两者都兼有
可靠性数据传输机制:
checkSum: 用于检测比特数目
timer: 计时器,用来检测超时并重传
seq num: 标识有序的packet
ack num: 确认已经收到的packet
nck num: 确认未收到
window,pipeling: 提高传输速率
其他:
套接字:(socket)
进程上的数据
多路分解:(demultiplexing) 服务端
报文段数据→套接字
多路复用:(multiplexing) 客户端
套接字→报文段
- 计算机网络之传输层总结
- 计算机网络之传输层
- 计算机网络--传输层知识总结
- 计算机网络漫谈之传输层
- 五、计算机网络之传输层
- 计算机网络—传输层协议之TCP
- 计算机网络—传输层协议之UDP
- 计算机网络总结之网络层
- 计算机网络总结之运输层
- 计算机网络----传输层
- 【计算机网络】传输层
- 计算机网络基础--传输层
- 计算机网络学习-传输层
- 计算机网络传输层相关
- 【计算机网络】传输层
- 计算机网络读书笔记-----传输层
- 计算机网络:传输层
- 计算机网络--传输层
- LeetCode107—Binary Tree Level Order Traversal II
- Java基础之异常篇
- 取消Android标题栏
- 第4周-项目5-(1)
- 获取单链表中倒数第N个结点数据
- 计算机网络之传输层总结
- eclipse的两个不同程序并排摆放,便于查看
- python decorator装饰器
- linux下基本性能监控命令和性能分析(vmstat)
- [数位dp+二分] LightOJ 1105 - Fi Binary Number
- Jenkins进阶系列之——16一个完整的JENKINS下的ANT BUILD.XML文件
- 第四周项目5-用递归方法求解(1)
- c++四种类型转换
- Git的常用命令