淘先锋技术网

首页 1 2 3 4 5 6 7

传输层:提供端到端的可靠报文和错误恢复--------段

应用层熟知端口: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,故这里分开发

 

 

转载于:https://www.cnblogs.com/team42/p/7021739.html