计算机网络之传输层总结

来源:互联网 发布: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相加,溢出忽略,得到最终值进行反码运算
在服务端检测只需全相加为 全一

应用好处:

  1. 应用层能更好控制发送的数据和发送时间
    数据将会立刻被打包成报文段,传到网络层
    适合实时传输的应用,容忍小错误
    TCP的拥塞机制减慢速度
  2. 无需建立连接
    TCP三次握手耗时
  3. 无连接状态
    无需维持连接状态
    TCP需要提供可靠数据连接与拥塞机制
  4. 分组头部开销小

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→慢启动


三次握手

这里写图片描述

  1. 在么在么
  2. 我在,我准备好咯,你呢【准备资源中,如果没3,则可能是SYN泛洪攻击】
  3. ok,我们可以通信啦

四次挥手

这里写图片描述

  1. A:我要跟你分手了噢
  2. B:我还没充分准备,请接受我的道歉信,A:婆婆妈妈的,我先看一下道歉信,哼
  3. B:我已经尽力了,只能跟你分了
  4. 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) 客户端
套接字→报文段

1 0