• 传输层(最重要)


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

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

     

  • 相关阅读:
    ViewPager实现页卡的最新方法--简洁的TabLayout(谷歌支持包)
    Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
    TelephonyManager
    Android之CookieStore的持久化
    Android中使用HTTP服务
    Android HttpClient基本使用方法
    Android Https相关完全解析 当OkHttp遇到Https
    告诉你月薪3万的程序员都避开了哪些坑?
    计算机上面常用的计算单位 & 个人计算机架构与接口设备
    计算机硬件的五大单元 & CPU的种类 & 计算机的运行流程
  • 原文地址:https://www.cnblogs.com/team42/p/7021739.html
Copyright © 2020-2023  润新知