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:传输控制协议,面向连接的可靠的传输协议
面向连接:三次握手(请求,请求、同意,同意)、四次挥手
可靠:四种可靠的传输机制---确认(每一个字节都需要确认)、重传、排序(每一个数据段进行标号,排序)、流控(滑动窗口)
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。
FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。
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次断开 本端和对端各发送了一次请求和确认
当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1, 服务器B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。 A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack = u+1(如图), A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。
UDP:用户数据协议,面向非连接的不可靠的传输协议
UDP报文格式(传输层的标配协议)
Length:长度(有多大) Checksum:校验和(检验数据是否完整)