#CCNA#笔记第二弹

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

#CCNA#笔记第二弹_第1张图片


TCP/IP协议栈:

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

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

#CCNA#笔记第二弹_第2张图片

#CCNA#笔记第二弹_第3张图片

#CCNA#笔记第二弹_第4张图片



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

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

#CCNA#笔记第二弹_第5张图片

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


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

#CCNA#笔记第二弹_第6张图片

#CCNA#笔记第二弹_第7张图片

#CCNA#笔记第二弹_第8张图片

#CCNA#笔记第二弹_第9张图片




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三次握手:

#CCNA#笔记第二弹_第10张图片

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)

#CCNA#笔记第二弹_第11张图片

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流控机制:

#CCNA#笔记第二弹_第12张图片

#CCNA#笔记第二弹_第13张图片

接收方的缓冲区决定了发送方可以一次发送多少数据,
接收方和发送方都各自向对方汇报缓冲区大小


判断丢包:
计时器:超时前接收方必须说明已收到,否则重发

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




你可能感兴趣的:(TCP/IP)