推箱子

简介: 推箱子

<!DOCTYPE html>

<html lang="en" xmlns:47px xmlns:47px xmlns:47px>

<head>

   <meta charset="UTF-8">

   <title>第二关</title>

</head>


<body>


<style type="text/css">

   body {

       background-color: #3b8ab8;

   }


   #box {

       margin-left: 200px;

       margin-top: 50px;


   }


   #box5 {

       position: absolute;

       margin-left: 950px;

       margin-top: -503px;

       width: 100px;

       height: 500px;

   }


   .p1 {

       background-color: #00a65a;

       border-radius: 15px;

       text-align: center;

       height: 40px;

       margin-top: -0.01px;

   }



</style>


<!--网格线-->

<canvas id="box" width="750" height="500" style="background-color: mediumvioletred;"></canvas>

<div id="person" style="background-color: #ff1010;left: 409px;top: 357px;width: 47px;height: 47px;position: absolute">


   <img src="11.png" : width="47" height="47">

</div>

<div id="box1" style="background-color: #ffde00;left: 360px;top: 210px;width: 47px;height: 47px;position: absolute">

   <img src="12.png" : width="47" height="47">

</div>

<div id="box3" style="background-color: #ffde00;left: 360px;top: 260px;width: 47px;height: 47px;position: absolute">

   <img src="12.png" : width="47" height="47">

</div>

<div id="box4" style="background-color: #ffde00;left: 409px;top: 310px;width: 47px;height: 47px;position: absolute">

   <img src="12.png" : width="47" height="47">

</div>

<div id="box2" style="background-color:red;left: 458px;top: 210px;width: 47px;height: 47px;position: absolute">

   <img src="12.png" : width="47" height="47">

</div>

<div id="box5" style="background-color:#9c3328;">

   <p class="p1">第二局</p>

   <button class="p1" style="width: 95px;float:left;">上一步</button>

   <button class="p1" style="width: 95px;float:left;">下一步</button>



</div>



<script type="text/javascript">


   var map = [

       [0, 1, 1, 1, 1, 1, 1, 0],

       [0, 1, 2, 2, 2, 2, 1, 1],

       [0, 1, 0, 0, 0, 0, 0, 1],

       [1, 1, 0, 3.1, 0, 3.2, 0, 1],

       [1, 1, 0, 3.3, 0, 1, 1, 1],

       [1, 1, 1, 0, 3.4, 1, 0, 0],

       [0, 0, 1, 0, 4, 1, 0, 0],

       [0, 0, 1, 1, 1, 1, 0, 0]

   ];

   //1为墙,0为路,2为目的地,3为箱子,4为人

   var c = document.getElementById("box");

   var cxt = c.getContext("2d");

   cxt.lineWidth = 3;


   var number = 4;

   var num = 0;

   //    var img= new Image();

   //    img.src="a.jpg";

   //画方格线

   for (var i = 0; i < 12; i++) {

       cxt.moveTo(0, 50 * i);

       cxt.lineTo(1260, 50 * i);

   }

   for (var i = 0; i < 19; i++) {

       cxt.moveTo(50 * i, 0);

       cxt.lineTo(50 * i, 900);

   }



   //控制墙

   for (var i = 0; i < 8; i++) {

       for (var j = 0; j < 8; j++) {

           if (map[i][j] == 1) {

               cxt.fillStyle = ("#F8EAFF");//墙

               cxt.fillRect(j * 50, i * 50, 50, 50);

           }

           if (map[i][j] == 2) {

               cxt.fillStyle = ("yellow");//目的地

               cxt.fillRect(j * 50, i * 50, 50, 50);

           }

       }

   }

   cxt.stroke();

   var x = 6;

   var y = 4;

   document.onkeydown = function (event) {

       var e = event || window.event || arguments.callee.caller.arguments[0];

       var person = document.getElementById("person");

       var box1 = document.getElementById("box1");

       var box2 = document.getElementById("box2");

       var box3 = document.getElementById("box3");

       var box4 = document.getElementById("box4");

       var top = person.offsetTop;

       var left = person.offsetLeft;

       var move = 50;//每个框的大小

       if (e) {

           switch (e.keyCode) {

               case 37://←控制左按键,37键盘左键的assii码

                   if (map[x][y - 1] == 3.1) {

                       if (map[x][y - 2] == 1) {

                           break;

                       }

                       if (map[x][y - 2] == 3.2) {

                           break;

                       }

                       if (map[x][y - 2] == 3.3) {

                           break;

                       }

                       if (map[x][y - 2] == 3.4) {

                           break;

                       } else {

                           if (map[x][y - 2] == 2) {

                               box1.style.left = box1.offsetLeft - move + "px";

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left - move + "px";

                               y--;

                               num++;

                           } else {

                               box1.style.left = box1.offsetLeft - move + "px";

                               var a = map[x][y - 2];

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left - move + "px";

                               y--;

                           }


                       }

                   } else if (map[x][y - 1] == 3.2) {

                       if (map[x][y - 2] == 1) {

                           break;

                       }

                       if (map[x][y - 2] == 3.1) {

                           break;

                       }

                       if (map[x][y - 2] == 3.3) {

                           break;

                       }

                       if (map[x][y - 2] == 3.4) {

                           break;

                       } else {

                           if (map[x][y - 2] == 2) {

                               box2.style.left = box2.offsetLeft - move + "px";

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left - move + "px";

                               y--;

                               num++;

                           } else {

                               box2.style.left = box2.offsetLeft - move + "px";

                               var a = map[x][y - 2];

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left - move + "px";

                               y--;

                           }


                       }


                   } else if (map[x][y - 1] == 3.3) {

                       if (map[x][y - 2] == 1) {

                           break;

                       }

                       if (map[x][y - 2] == 3.2) {

                           break;

                       }

                       if (map[x][y - 2] == 3.1) {

                           break;

                       }

                       if (map[x][y - 2] == 3.4) {

                           break;

                       } else {

                           if (map[x][y - 2] == 2) {

                               box3.style.left = box3.offsetLeft - move + "px";

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left - move + "px";

                               y--;

                               num++;

                           } else {

                               box3.style.left = box3.offsetLeft - move + "px";

                               var a = map[x][y - 2];

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left - move + "px";

                               y--;

                           }


                       }

                   } else if (map[x][y - 1] == 3.4) {

                       if (map[x][y - 2] == 1) {

                           break;

                       }

                       if (map[x][y - 2] == 3.2) {

                           break;

                       }

                       if (map[x][y - 2] == 3.3) {

                           break;

                       }

                       if (map[x][y - 2] == 3.1) {

                           break;

                       } else {

                           if (map[x][y - 2] == 2) {

                               box4.style.left = box4.offsetLeft - move + "px";

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left - move + "px";

                               y--;

                               num++;

                           } else {

                               box4.style.left = box4.offsetLeft - move + "px";

                               var a = map[x][y - 2];

                               map[x][y - 2] = map[x][y - 1];

                               map[x][y - 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left - move + "px";

                               y--;

                           }


                       }

                   } else if (map[x][y - 1] == 1) {

                       break;

                   } else if (map[x][y - 1] == 0) {

                       var a = map[x][y - 1];

                       map[x][y - 1] = map[x][y];

                       map[x][y] = a;

                       person.style.left = left - move + "px";

                       y--;

                   }

                   break;



               case 38://↑控制向上按键

//3.1

                   if (map[x - 1][y] == 3.1) {

                       if (map[x - 2][y] == 1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.2) {

                           break;

                       }

                       if (map[x - 2][y] == 3.3) {

                           break;

                       }

                       if (map[x - 2][y] == 3.4) {

                           break;

                       } else {

                           if (map[x - 2][y] == 2) {

                               box1.style.top = box1.offsetTop - move + "px";

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top - move + "px";

                               x--;

                               num++;

                           } else {

                               box1.style.top = box1.offsetTop - move + "px";

                               var a = map[x - 2][y];

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top - move + "px";

                               x--;

                           }


                       }


                   } else if (map[x - 1][y] == 3.2) {

                       if (map[x - 2][y] == 1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.3) {

                           break;

                       }

                       if (map[x - 2][y] == 3.4) {

                           break;

                       } else {

                           if (map[x - 2][y] == 2) {

                               box2.style.top = box2.offsetTop - move + "px";

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top - move + "px";

                               x--;

                               num++;

                           } else {

                               box2.style.top = box2.offsetTop - move + "px";

                               var a = map[x - 2][y];

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top - move + "px";

                               x--;

                           }


                       }

                   } else if (map[x - 1][y] == 3.3) {

                       if (map[x - 2][y] == 1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.2) {

                           break;

                       }

                       if (map[x - 2][y] == 3.4) {

                           break;

                       } else {

                           if (map[x - 2][y] == 2) {

                               box3.style.top = box3.offsetTop - move + "px";

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top - move + "px";

                               x--;

                               num++;

                           } else {

                               box3.style.top = box3.offsetTop - move + "px";

                               var a = map[x - 2][y];

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top - move + "px";

                               x--;

                           }


                       }

                   } else if (map[x - 1][y] == 3.4) {

                       if (map[x - 2][y] == 1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.1) {

                           break;

                       }

                       if (map[x - 2][y] == 3.2) {

                           break;

                       }

                       if (map[x - 2][y] == 3.3) {

                           break;

                       } else {

                           if (map[x - 2][y] == 2) {

                               box4.style.top = box4.offsetTop - move + "px";

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top - move + "px";

                               x--;

                               num++;

                           } else {

                               box4.style.top = box4.offsetTop - move + "px";

                               var a = map[x - 2][y];

                               map[x - 2][y] = map[x - 1][y];

                               map[x - 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top - move + "px";

                               x--;

                           }


                       }

                   } else if (map[x - 1][y] == 1) {

                       break;

                   } else if (map[x - 1][y] == 0) {

                       var a = map[x - 1][y];

                       map[x - 1][y] = map[x][y];

                       map[x][y] = a;

                       person.style.top = top - move + "px";

                       x--;

                   }


                   break;





                   //3.1

               case 39://→控制向右按键

                   if (map[x][y + 1] == 3.1) {

                       if (map[x][y + 2] == 1) {

                           break;

                       }

                       if (map[x][y + 2] == 3.2) {

                           break;

                       }

                       if (map[x][y + 2] == 3.3) {

                           break;

                       }

                       if (map[x][y + 2] == 3.4) {

                           break;

                       } else {

                           if (map[x][y + 2] == 2) {

                               box1.style.left = box1.offsetLeft + move + "px";

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left + move + "px";

                               y++;

                               num++;

                           } else {

                               box1.style.left = box1.offsetLeft + move + "px";

                               var a = map[x][y + 2];

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left + move + "px";

                               y++;

                           }


                       }

                   } else if (map[x][y + 1] == 3.2) {

                       if (map[x][y + 2] == 1) {

                           break;

                       }

                       if (map[x][y + 2] == 3.1) {

                           break;

                       }

                       if (map[x][y + 2] == 3.3) {

                           break;

                       }

                       if (map[x][y + 2] == 3.4) {

                           break;

                       } else {

                           if (map[x][y + 2] == 2) {

                               box2.style.left = box2.offsetLeft + move + "px";

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left + move + "px";

                               y++;

                               num++;

                           } else {

                               box2.style.left = box2.offsetLeft + move + "px";

                               var a = map[x][y + 2];

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left + move + "px";

                               y++;

                           }


                       }


                   } else if (map[x][y + 1] == 3.3) {

                       if (map[x][y + 2] == 1) {

                           break;

                       }

                       if (map[x][y + 2] == 3.2) {

                           break;

                       }

                       if (map[x][y + 2] == 3.1) {

                           break;

                       }

                       if (map[x][y + 2] == 3.4) {

                           break;

                       } else {

                           if (map[x][y + 2] == 2) {

                               box3.style.left = box3.offsetLeft + move + "px";

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left + move + "px";

                               y++;

                               num++;

                           } else {

                               box3.style.left = box3.offsetLeft + move + "px";

                               var a = map[x][y + 2];

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left + move + "px";

                               y++;

                           }


                       }


                   } else if (map[x][y + 1] == 3.4) {

                       if (map[x][y + 2] == 1) {

                           break;

                       }

                       if (map[x][y + 2] == 3.2) {

                           break;

                       }

                       if (map[x][y + 2] == 3.3) {

                           break;

                       }

                       if (map[x][y + 2] == 3.1) {

                           break;

                       } else {

                           if (map[x][y + 2] == 2) {

                               box4.style.left = box4.offsetLeft + move + "px";

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = 0;

                               person.style.left = left + move + "px";

                               y++;

                               num++;

                           } else {

                               box4.style.left = box4.offsetLeft + move + "px";

                               var a = map[x][y + 2];

                               map[x][y + 2] = map[x][y + 1];

                               map[x][y + 1] = map[x][y];

                               map[x][y] = a;

                               person.style.left = left + move + "px";

                               y++;

                           }


                       }


                   } else if (map[x][y + 1] == 1) {

                       break

                   } else if (map[x][y + 1] == 0) {

                       var a = map[x][y + 1];

                       map[x][y + 1] = map[x][y];

                       map[x][y] = a;

                       person.style.left = left + move + "px";

                       y++;

                   }


                   break;


//3.1

               case 40://↓控制向下按键

                   if (map[x + 1][y] == 3.1) {

                       if (map[x + 2][y] == 1) {

                           break;

                       }

                       if (map[x + 2][y] == 3.2) {

                           break;

                       }

                       if (map[x + 2][y] == 3.3) {

                           break;

                       }

                       if (map[x + 2][y] == 3.4) {

                           break;

                       } else {

                           if (map[x + 2][y] == 2) {

                               box1.style.top = box1.offsetTop + move + "px";

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top + move + "px";

                               x++;

                               num++;

                           } else {

                               box1.style.top = box1.offsetTop + move + "px";

                               var a = map[x + 2][y];

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top + move + "px";

                               x++;

                           }


                       }


                   } else if (map[x + 1][y] == 3.2) {

                       if (map[x + 2][y] == 1) {

                           break;

                       }

                       if (map[x + 2][y] == 3.1) {

                           break;

                       }

                       if (map[x + 2][y] == 3.3) {

                           break;

                       }

                       if (map[x + 2][y] == 3.4) {

                           break;

                       } else {

                           if (map[x + 2][y] == 2) {

                               box2.style.top = box2.offsetTop + move + "px";

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top + move + "px";

                               x++;

                               num++;

                           } else {

                               box2.style.top = box2.offsetTop + move + "px";

                               var a = map[x + 2][y];

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top + move + "px";

                               x++;

                           }


                       }

                   } else if (map[x + 1][y] == 3.3) {

                       if (map[x + 2][y] == 1) {

                           break;

                       }

                       if (map[x + 2][y] == 3.2) {

                           break;

                       }

                       if (map[x + 2][y] == 3.1) {

                           break;

                       }

                       if (map[x + 2][y] == 3.4) {

                           break;

                       }

                       else {

                           if (map[x + 2][y] == 2) {

                               box3.style.top = box3.offsetTop + move + "px";

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top + move + "px";

                               x++;

                               num++;

                           } else {

                               box3.style.top = box3.offsetTop + move + "px";

                               var a = map[x + 2][y];

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top + move + "px";

                               x++;

                           }


                       }

                   } else if (map[x + 1][y] == 3.4) {

                       if (map[x + 2][y] == 1) {

                           break;

                       }

                       if (map[x + 2][y] == 3.2) {

                           break;

                       }

                       if (map[x + 2][y] == 3.3) {

                           break;

                       }

                       if (map[x + 2][y] == 3.1) {

                           break;

                       } else {

                           if (map[x + 2][y] == 2) {

                               box4.style.top = box4.offsetTop + move + "px";

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = 0;

                               person.style.top = top + move + "px";

                               x++;

                               num++;

                           } else {

                               box4.style.top = box4.offsetTop + move + "px";

                               var a = map[x + 2][y];

                               map[x + 2][y] = map[x + 1][y];

                               map[x + 1][y] = map[x][y];

                               map[x][y] = a;

                               person.style.top = top + move + "px";

                               x++;

                           }


                       }

                   } else if (map[x + 1][y] == 1) {

                       break;

                   } else if (map[x + 1][y] == 0) {

                       var a = map[x + 1][y];

                       map[x + 1][y] = map[x][y];

                       map[x][y] = a;

                       person.style.top = top + move + "px";

                       x++;

                   }

                   break;


           }

       }


       setTimeout(function () {

           if (num == number) {

               alert("下一关")

               location.href = "box2.html";

           }

       })

   };


</script>


</body>

</html>


相关文章
|
15天前
|
人工智能 算法 安全
数字人平台指南:聚焦四大关键维度,破解选型难题
本文深度测评32款主流AI数字人平台,从技术性能、功能覆盖、使用体验、场景适配四大维度综合分析,助力用户科学决策。
|
传感器 5G UED
5G 标准化进程|带你读《5G空口特性与关键技术》之二
从 2016 年起,3GPP 启动了 R14 研究项,目标是在 2020 年实现 5G 的商业化部署。为此,3GPP 采取了按阶段定义规范的方式。第一阶段目标是R15,旨在完成规范 5G 的有限功能。第二阶段是 R16,旨在完成规范 IMT-2020 所定义的所有功能,将于 2019 年年底到 2020 年完成。
5G 标准化进程|带你读《5G空口特性与关键技术》之二
|
4月前
|
人工智能 测试技术 API
Apifox 和 Apipost如何选?2025企业API开发工具选型需求分析及建议
本文对比了 Apipost 与 Apifox 在 AI 功能及 API 功能上的差异,指出 Apipost 凭借 AI 一键补全文档、智能提取 API 文档、AI 断言、模拟测试数据、生成用例、参数更新、脚本生成、全局搜索等能力,显著提升开发效率与质量。同时,Apipost 在离线使用、一键分享、OpenAPI 格式支持、多协议适配、数据库导入、模拟数据、压测功能等基础 API 能力上亦全面领先。在AI时代的2025年,API + AI是Apipost将AI技术融合行业应用的最佳典范,这种趋势下,也说明Apipost 更能助力企业与开发者实现高效智能开发。
309 2
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
教育领域的AI进展:智能辅导与个性化学习的技术革新与挑战
随着人工智能技术的发展,AI Agent在教育领域的应用日益广泛,特别是在智能辅导与个性化学习方面展现出巨大潜力。通过自然语言处理、机器学习和数据分析等技术,AI可模拟个性化辅导员,根据学生的学习情况提供定制化资源与实时反馈。未来,AI Agent将更注重情感分析与跨学科培养,成为教师的有力助手,推动教育公平与效率提升。然而,数据隐私、个体差异及教育资源不平衡等问题仍需克服,以实现更智能化、全面化的教育生态。
534 10
教育领域的AI进展:智能辅导与个性化学习的技术革新与挑战
|
21天前
|
弹性计算 人工智能 双11
2025年阿里云双十一优惠活动,云服务器租赁价格多少钱一年?
2025阿里云双11优惠来袭!轻量应用服务器38元/年起,ECS云服务器99元/年起,2核4G配置仅需199元/年,新老用户同享,续费不涨价。限量秒杀+大额代金券叠加,企业用户还可领专属补贴,最高享10万出海支持。点击直达活动页抢购→
463 5
|
19天前
通义千问Qwen荣获“领先科技奖”
2025年11月6日,通义千问大模型荣膺世界互联网大会“领先科技奖”。凭借卓越性能与开源贡献,其已开源超300个模型,下载量超6亿次,衍生模型超17万,居全球首位。
276 1
|
2月前
|
存储 安全 前端开发
Web渗透-文件上传漏洞-上篇
文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
350 1
Web渗透-文件上传漏洞-上篇
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
179 6
|
6月前
|
网络协议 中间件 网络安全
计算机网络OSI七层模型
OSI模型分为七层,各层功能明确:物理层传输比特流,数据链路层负责帧传输,网络层处理数据包路由,传输层确保端到端可靠传输,会话层管理会话,表示层负责数据格式转换与加密,应用层提供网络服务。数据在传输中经过封装与解封装过程。OSI模型优点包括标准化、模块化和互操作性,但也存在复杂性高、效率较低及实用性不足的问题,在实际中TCP/IP模型更常用。
913 10