TCP

 

传输层:TCP/UDP协议      定义一个数据怎么传,该传给谁,传给哪个应用程序

端口号--标识应用程序或者服务(用于表示不同的应用程序)   0-65535(2^16=65536),其中0-1023著名端口, 1024-65535高端口/动态端口---本地意义

著名端口(目标端口)

HTTP:超文本传输协议(明文传输)--- WEB,TCP 80,HTML

如果访问某一个IP的80端口,就是访问它的标准浏览器WEB

HTTPS:安全的超文本传输协议(密文传输)TCP 443/

FTP:文件传输协议(编码),TCP 20/21        TFTP:(二进制)

   SSH:安全的远程登录协议,22

TELNET:远程登录协议,TCP 23,远程的登陆设备

DNS:域名解析协议,TCP/UDP 53把域名解析成地址

DHCP:动态主机配置协议---发IP地址UDP 67/68

RIP:路由信息协议 UDP 520

SNMP:简单的网络管理协议,UDP 161

发数据(数据包的封装):按照OSI七层参考模型,从数据逐层添加对应的报头信息的过程

源MAC/目标MAC | 源IP/目标IP | 传输层TCP/UDP | 源端口/目标端口|data

 

TCP:传输控制协议,面向连接的可靠的传输协议

面向连接:三次握手(请求,请求、同意,同意)、四次挥手

可靠:四种可靠的传输机制---确认(每一个字节都需要确认)、重传、排序(每一个数据段进行标号,排序)、流控(滑动窗口)

TCP

TCP

ACK TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1

SYN(SYNchronization) 在连接建立时用来同步序号。当SYN=1ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1ACK=1. 因此,  SYN1就表示这是一个连接请求或连接接受报文。

FIN finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

 

TCP

TCP

SP:源端口(16位)         DP:目标端口(16位)

                            SN:***

                            AN:确认号(期望收到的下一个序号)

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。

 

序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

 

控制位:URG  ACK  PSH  RST  SYN  FIN,共6个,每一个标志位表示一个控制功能。

1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

 

TCP4次断开 本端和对端各发送了一次请求和确认 

TCP

TCP

当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1,  服务器B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。  A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack = u+1(如图), A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。

 

UDP:用户数据协议,面向非连接的不可靠的传输协议

UDP报文格式(传输层的标配协议)

SP:源端口(16位)         DP:目标端口(16位)

Length:长度(有多大)   Checksum:校验和(检验数据是否完整)

TCP