博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#CCNA#笔记第二弹
阅读量:7032 次
发布时间:2019-06-28

本文共 1326 字,大约阅读时间需要 4 分钟。

hot3.png

备注:seq为sequence(序列),ack(响应)

TCP/IP协议栈:

TCP:面向连接(打电话:先建立连接,如果不通,又要重新开启连接)

UDP:非面向连接(发信息,不知道对方是否收到)

源端口号:发送TCP进程对应的端口号

目标端口号:目标端接收进程的端口号

32位序列号/确认号(可靠传送):0~2^32-1范围内,数据段标记,用于到目的端对到达包的重组

TCP顺序号/确认号
顺序号:数据内容的第一个byte的序号,也可以知道尾部的byte的序号

4位首部长度:TCP包头的长度(可变,一次有保留位)
5个表示位:URG【紧急指针有效位(告诉接受方有紧急数据),常与16位紧急指针(紧急数据在哪里)配合用】
ACK:确认序列号有效位,表明该数据包包含确认信息(32位序列号)(几乎多数数据包都有此位)
PSH:通知接收端立即将数据提交用户进程,不在缓存中停留等待更多数据
RST:为1时,请求马上断掉连接(不通过4次握手)
SYN:为1时,请求建立连接(通过三次握手)
FIN:为1时,数据发送完毕,请求断开连接
16位窗口大小:滑动窗口的大小,指明本地数据可接收数据的字节数(涉及流控机制、拥塞控制机制,保证可靠传输)。指通讯双方的接收缓存的大小。
16位校验和:类似MD5值
可选项:导致包头长度无固定(因此需要保留位)
常见端口号(1~1024):
使用TCP传输:【ftp:21
telnet:23
smtp:25
dns:53】
使用UDP传输:【tftp:69
snmp:161
RIP:520】
DNS有时通过TCP,也可以通过UDP
http:80
ssh:22
https:443

tcp三次握手:

SYN或FIN一旦为1,都会占用一个序列号
(seq:起始序列号)
三次握手过程:
1.发送方:发送一个SYN包,SYN置为1(seq=100,ctl=SYN)
2.接收方:接收;发送SYN,ACK(seq=300,ack-101,ctl=syn=1,ack=1)
3发送方:接收syn。建立会话(seq=101,ack=301,ctl=ack)
建好TCP链接

(ps:除了建立连接的第一个SYN报文,其他的包都有ACK置为1)

tcp四次断开:
A:seq=100
B:seq=300
A:ACK=101
A:发送FIN请求断开(seq=101,ack=301,ctl=FIN,ACK=1)
B:发送ACK(seq=301.ack=102,ctl=ACK)(没有数据,只有ACK不占用序列号);发送FIN,请求断开(seq=301,ack=102,ctl=FIN,ACK)【两者的起始序列号一样】
A:发送ACK(seq=102,ack=302,ctl=ACK)

TCP流控机制:

接收方的缓冲区决定了发送方可以一次发送多少数据,
接收方和发送方都各自向对方汇报缓冲区大小
判断丢包:
计时器:超时前接收方必须说明已收到,否则重发

如果接收方三次发送同样的ACK,发送方就会根据ack发送合适的包(之前遗失的)给接收方

转载于:https://my.oschina.net/hochikong/blog/302426

你可能感兴趣的文章
HCIA-Storage:第一章存储前沿与发展趋势
查看>>
【HNOI2018】排列
查看>>
小X的质数 NOIP模拟赛 魔改线性筛素数
查看>>
kafka笔记9(监控)
查看>>
js 继承
查看>>
快速理解聚合根、实体、值对象的区别和联系
查看>>
小程序文档
查看>>
wp7三种图标大小配置
查看>>
HTTP Status 404(The requested resource is not available)
查看>>
iOS开发如何快速成长?
查看>>
Selenium学习(13) unittest断言方法
查看>>
QQ分享-定制分享卡片
查看>>
DataTable的用法
查看>>
17_服务器提权
查看>>
Python文件指针与Python函数
查看>>
免费16WiFi被吐槽
查看>>
移动UI自动化-Page Objects Pattern
查看>>
-------分割线------\n FriskyPuppy的图论学习之路!
查看>>
JZ2440 裸机驱动 第13章 LCD控制器(2)
查看>>
连邦IT服务IT用户、厂商和服务商
查看>>