传输层:提供端到端的可靠报文和错误恢复--------段
应用层熟知端口:21:FTP
23 Telent,远程控制登录端口
25 SMPT 邮件传输
53 DNS 域名--->IP地址 运行在UDP协议上
69 TFTP 文件传输协议
80 HTTP 超文本传输协议
主要协议:TCP,UDP
TCP UDP 区别:1.TCP提供面向连接的,可靠的数据流传输;UDP提供非面向连接的,不可靠的数据流传输
2.UDP没有拥塞控制,TCP有
3.TCP注重安全性,UDP数据传输快
TCP对应协议:FTP,Telent, SMTP ,POP3,HTTP
UDP对应协议:DNS,SNMP(简单网络管理协议),TFTP(简单文件传输协议)
TCP建立连接:1.客户端发送syn包(syn=1,seq=x)到服务器,进入SYN-SEND,等待确认
2.服务端收到SYN包,发送SYN包(SYN=1,Seq=y)和ACK包(ack=1,ack=x+1)到客户端,
进入SYN-RECV状态
3.客户端收到SYN和ACK包,向服务器发送ACK(ack=1,ack=y+1),
之后客户端和服务端都进入ESTABLISHED(英文:建立)
三次握手原因:防止失效的连接请求报文段突然又传送到主机B,而产生错误
比如:A第一次发送的连接请求并没有丢失,延迟到达B,B以为A又重新发起连接,
于是B同意并向A确认,但A不理会,B就一直等待导致资源浪费
TCP关闭连接:1.主动关闭方A发送FIN,告诉B要关闭连接
2.B收到FIN发给A一个ACK
3.B发给A一个FIN关闭数据
4.A收到FIN发给B确认关闭
客户端连接状态变迁:CLOSED -> 主动打开,发送SYN=1 -> SYN_SENT -> 收到服务器的SYN=1和ACK时,发送三次握手的最后一个ACK -> ESTABLISHED -> 数据传送 -> 主动关闭 -> 发送FIN=1,等待确认ACK的到达 -> FIN_WAIT_1 -> 收到确认ACK后时,一向连接关闭 -> FIN_WAIT_2 ->收到服务器发送的FIN=1报文,响应,发送四次挥手的的最后一个确认ACK -> 这时另一条连接也关闭了,进入TIME_WAIT状态 -> 经过2倍报文寿命,TCP删除连接记录 -> 回到CLOSED状态
服务器端连接状态变迁:CLOSED -> 被动打开 -> LISTEN -> 收到SYN=1的报文,发送SYN=1和确认ACK -> 进入SYN_RCVD -> 收到三次握手 的最后一个确认ACK -> ESTABLISHED -> 数据传送 -> 数据传送完毕,收到FIN=1 -> 发送确认ACK并进入CLOSED_WAIT -> 发送FIN=1给客户端 -> LAST_ACK -> 收到客户端四次挥手的最后一个确认ACK -> 删除连接记录 -> 回到CLOSED状态
浏览器输入URL之后的事:
1.应用层DNS解析域名
2.应用层客户端发送http请求
3.传输层TCP传输报文
4.网络层IP协议查询MAC地址
5.数据到底数据链路层,发送
6.服务器接收数据,响应请求返回文件,浏览器页面渲染
TCP滑动窗口:实现对发送方的流量控制,接收方传递信息给发送方,
使其不要发送太快,返回ACK中包含自己的接收窗口大小
拥塞控制:防止过多数据注入到网络,不使路由器或链路过载
方法:1.慢开始,拥塞避免 从小到大增大发送窗口
2.快重传,快恢复 :减少因为拥塞导致的数据包丢失带来的重传时间,
发送端一连收到三个重复的ACK,即可断定分组丢失,
立即重传丢失的报文。慢开始门限减半,窗口减小
http和https: 1,http是80端口,https是443端口
2.http明文传输,https是ssl加密传输协议
为什么建立连接是3次握手,关闭连接是4次:
建立连接,B收到SYN后可以把ack和syn放在一个报文发送,
关闭连接时,收到FIN仅代表A没有数据发送给B了,但B可能有数据发送给A,发送完之后再发FIN给A,故这里分开发