博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2--第四层
阅读量:2385 次
发布时间:2019-05-10

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

除了要标记从源主机到目的主机之外,还有标记从源进程到目的进程。标记从源进程到达目的进程靠的就是TCP和UDP报文。进程间的通信是靠TCP来解决的。因此在IP报文里还有封装一个首部。

TCP和UDP主要是控制从进程到进程的通信。

为了标记源进程和目的进程,我们使用端口。端口号是用16位来标识的,所以说端口的最大范围就是从0到65535了。

源端口一般是随机的端口,而目标端口,如果接收方是服务器的话,就要使用固定的、保留的端口。比如说web服务的80端口,ssh的22端口。0到1023这些端口号是保留的。

TCP是可靠的协议,在实现真正报文传输之前,要先发送报文建立连接,所以TCP协议被称为有连接的协议。而UDP是无连接的协议。TCP在通信前建立了专用线路。

TCP和UDP各自有各自的端口。互相之间不冲突。

 

1.             sequence number: TCP是可靠的,任何一个发送者发出一个数据之后,要求对方要确认,发送者才发下一个。为了区别不同主机间的通信和同一个进程之间不同次序的通信,我们必须给进程一个序列号,用来标识这个报文的号码,这个号码一般是随机产生的,但是某一次通信的第一个序列号确认以后,以后所有的序列号都是在原来的基础上加1。

2.             acknowledge number:接收方确认收到以后,在sequencenumber的基础上加1,发给发送方,发送方就接着发送下一个报文(下一个报文的sequence number就是这次接收方发送的acknowledge number)。

3.             header length:头部长度。

4.             reserved:保留位。

5.             URG:urgent,紧急标志位,如果URG=1,表示该报文需要优先到达对方。因为这可能是一个控制报文。

6.             Urgent point:如果URG = 1,则紧急指针有效。

7.             Ack:ack = 1,表示确认号有效,如果ack= 0,表示确认号无效。在TCP的三次握手中,请求方的第一次请求,只有序列号,没有确认号,故这一个请求报文的ack可能是0。除了这一次之外,ack = 1。

8.             PSH:推送位。

9.             Rst:重置连接时使用。当TCP连接出现故障时,我们需要将连接重新建立,但不需要重新发送请求报文,只需要将连接重新确认,这时要发送重置位rst。重置有风险,别人可能通过重置连接,劫持TCP连接。

10.          Syn:同步位,指明sequencenumber是否有效。序列号应该一直有效。Syn = 1而ack = 0,意味着双方要建立通信了,而后ack = 1。在三次握手时,只有双方各自的第一次syn = 1,之后syn = 0。

11.          Fin:结束位。

TCP的断开需要四个报文:

请求方发送一个fin = 1的报文,就相当于告诉对方要分手了。TCP的连接是双通道了,我发你收,你发我收,为了能独立的进行,需要两个通道(网线也是成双成对出现的)。于是请求方请求断开时,只请求了一半,所以还得让对方发送断开请求,断开另一个通道。每一方都是请求自己跟对方通信的连接断开。

12.          window size:

发送方一次发多个报文,接收方依次确认。发送方一次发多少报文要考虑接收方的接收能力。所以接收方要告诉对方自己一次能接多少个,这就是接收方的窗口大小。窗口大小是可以动态改变的,接收方每次发送确认报文时都要告诉发送方自己的窗口有多大。所以又叫滑动窗口,slide window。

当报文到达网卡后,网卡会发出一个中断请求,告诉CPU赶紧接收。接下来把多余的报文暂存起来,这就是网络缓冲区。而滑动窗口就是缓冲区中的一段。对TCP来讲,称为套接字缓冲区。

滑动窗口的本质:接收方的主机可以分配给网络的可用于接收报文的内存空间大小。网络缓冲区不但有接收缓冲区还有发送缓冲区。

在TCP中,滑动窗口的大小是由双方协商生成的,以小的一方为准。各自向对方通知自己的窗口大小。

13.          TCP Checksum:校验和。校验整个TCP报文的,不仅仅是TCP首部校验。这里就校验了报文,不用之前在IP里校验了,故IP只坚持IP首部校验和。

你可能感兴趣的文章
weblogic node maanger 远程命令执行漏洞
查看>>
信息与网络安全相关参考资料的下载
查看>>
Remote IIS 5.x and IIS 6.0 Server Name Spoof
查看>>
RACI 责任分配矩阵
查看>>
利用CSVDE和DSADD实现AD帐号批量导入导出
查看>>
oracle用户创建及权限设置
查看>>
vBulletin 4.X后台拿shell
查看>>
Windows Server 2008 R2之十全局编录服务器(GC)
查看>>
Exchange域名重写,实现SMTP地址共享
查看>>
我眼里的Exchange 2010 之:1—DAG
查看>>
IIS7备份还原
查看>>
exchange的边缘服务器备份
查看>>
The Domino security model
查看>>
系统管理:smartmontools
查看>>
smartmontools相关文档
查看>>
exchange发信流程
查看>>
php session security
查看>>
Memcache分布式部署方案
查看>>
Exchange 导出用户数据
查看>>
vBulletin 论坛全版本 后台拿shell
查看>>