تور پاكىتى دەلالچىسى TCP ئۇلىنىشىنىڭ ئاساسلىق سىرلىرى: ئۈچ قېتىم قول ئېلىشىشنىڭ زۆرۈرلۈكىنى ئاشكارىلىدى

TCP ئۇلىنىشىنى تەڭشەش
توردا كۆرۈۋاتقاندا، ئېلخەت يوللىغاندا ياكى تور ئويۇنى ئوينىغاندا، كۆپىنچە ئۇنىڭ ئارقىسىدىكى مۇرەككەپ تور ئۇلىنىشىنى ئويلىمايمىز. قانداقلا بولمىسۇن، دەل مۇشۇ كىچىك قەدەملەر بىز بىلەن مۇلازىمېتىر ئوتتۇرىسىدىكى مۇقىم ئالاقىنى كاپالەتلەندۈرىدۇ. ئەڭ مۇھىم قەدەملەرنىڭ بىرى TCP ئۇلىنىشىنى تەڭشەش بولۇپ، بۇنىڭ يادروسى ئۈچ تەرەپلىك قول ئېلىشىشتۇر.

بۇ ماقالىدە ئۈچ تەرەپلىك قول ئېلىشىشنىڭ پىرىنسىپى، جەريانى ۋە ئەھمىيىتى تەپسىلىي مۇھاكىمە قىلىنىدۇ. قەدەممۇ-قەدەم، ئۈچ تەرەپلىك قول ئېلىشىشنىڭ نېمە ئۈچۈن زۆرۈر ئىكەنلىكىنى، ئۇنىڭ ئۇلىنىشنىڭ مۇقىملىقى ۋە ئىشەنچلىكلىكىنى قانداق كاپالەتلەندۈرىدىغانلىقىنى ۋە سانلىق مەلۇمات يەتكۈزۈش ئۈچۈن قانچىلىك مۇھىملىقىنى چۈشەندۈرۈپ بېرىمىز. ئۈچ تەرەپلىك قول ئېلىشىشنى چوڭقۇر چۈشىنىش ئارقىلىق، تور ئالاقىسىنىڭ ئاساسىي مېخانىزمىنى تېخىمۇ ياخشى چۈشىنىپ، TCP ئۇلىنىشىنىڭ ئىشەنچلىكلىكىنى تېخىمۇ ئېنىق چۈشىنىۋالىمىز.

TCP ئۈچ تەرەپلىك قول ئالماشتۇرۇش جەريانى ۋە ھالەت ئۆزگىرىشى
TCP ئۇلىنىشقا يۈزلەنگەن توشۇش كېلىشىمى بولۇپ، سانلىق مەلۇمات يوللاشتىن بۇرۇن ئۇلىنىش ئورنىتىشنى تەلەپ قىلىدۇ. بۇ ئۇلىنىش ئورنىتىش جەريانى ئۈچ تەرەپلىك قول ئېلىشىش ئارقىلىق ئېلىپ بېرىلىدۇ.

 TCP ئۈچ تەرەپلىك قول ئېلىشىش

كېلىڭ، ھەر بىر ئۇلىنىشتا ئەۋەتىلىدىغان TCP پاكېتلىرىنى تېخىمۇ تەپسىلىي كۆرۈپ باقايلى.

دەسلەپتە، خېرىدار ۋە مۇلازىمېتىرنىڭ ھەر ئىككىسى تاقالغان بولىدۇ. ئالدى بىلەن، مۇلازىمېتىر ئاكتىپ ھالدا بىر پورتنى ئاڭلايدۇ ۋە تىڭشىش ھالىتىدە بولىدۇ، بۇ دېگەنلىك مۇلازىمېتىرنى قوزغىتىش كېرەك. ئاندىن، خېرىدار تور بېتىگە كىرىشكە تەييار بولىدۇ. ئۇ مۇلازىمېتىر بىلەن ئۇلىنىش ئورنىتىشى كېرەك. بىرىنچى ئۇلىنىش پاكىتىنىڭ فورماتى تۆۋەندىكىدەك:

 SYN پاكېت

بىر خېرىدار ئۇلىنىش باشلىغاندا، ئۇ تاسادىپىي باشلانغۇچ تەرتىپ نومۇرى (client_isn) ھاسىل قىلىدۇ ۋە ئۇنى TCP باشلىقىنىڭ «تەرتىپ نومۇرى» بۆلىكىگە قويىدۇ. شۇنىڭ بىلەن بىر ۋاقىتتا، خېرىدار چىقىش پاكىتىنىڭ SYN پاكىتى ئىكەنلىكىنى كۆرسىتىش ئۈچۈن SYN بايراق ئورنىنى 1 گە تەڭشەيدۇ. خېرىدار تۇنجى SYN پاكىتىنى مۇلازىمېتىرغا ئەۋەتىش ئارقىلىق مۇلازىمېتىر بىلەن ئۇلىنىش ئورنىتىشنى خالايدىغانلىقىنى بىلدۈرىدۇ. بۇ پاكىتتا قوللىنىشچان قەۋەت سانلىق مەلۇماتلىرى (يەنى ئەۋەتىلگەن سانلىق مەلۇماتلار) يوق. بۇ ۋاقىتتا، خېرىدارنىڭ ھالىتى SYN-SENT دەپ بەلگىلىنىدۇ.

SYN+ACK پاكېت

بىر سېرۋېر بىر خېرىداردىن SYN پاكىتىنى تاپشۇرۇۋالغاندا، ئۇ تاسادىپىي ھالدا ئۆزىنىڭ تەرتىپ نومۇرىنى (server_isn) باشلايدۇ ۋە ئاندىن بۇ نومۇرنى TCP باشلىقىنىڭ «تەرتىپ نومۇرى» بۆلىكىگە قويىدۇ. ئاندىن، سېرۋېر «تەسدىقلاش نومۇرى» بۆلىكىگە client_isn + 1 نى كىرگۈزۈپ، SYN ۋە ACK بىتلىرىنىڭ ھەر ئىككىسىنى 1 گە تەڭشەيدۇ. ئاخىرىدا، سېرۋېر پاكىتنى خېرىدارغا ئەۋەتىدۇ، بۇ پاكىتتا قوللىنىشچان قەۋەت سانلىق مەلۇماتلىرى (ۋە سېرۋېرنىڭ ئەۋەتىش سانلىق مەلۇماتلىرى) يوق. بۇ ۋاقىتتا، سېرۋېر SYN-RCVD ھالىتىدە بولىدۇ.

ACK پاكېت

خېرىدار مۇلازىمېتىردىن پاكىتنى تاپشۇرۇۋالغاندىن كېيىن، ئاخىرقى جاۋاب پاكىتىغا جاۋاب قايتۇرۇش ئۈچۈن تۆۋەندىكى ئەلالاشتۇرۇشلارنى ئېلىپ بېرىشى كېرەك: بىرىنچى، خېرىدار جاۋاب پاكىتىنىڭ TCP باشلىقىنىڭ ACK بىتىنى 1 گە تەڭشەيدۇ؛ ئىككىنچى، خېرىدار «جاۋاب نومۇرىنى جەزملەشتۈرۈش» بۆلىكىگە server_isn + 1 قىممىتىنى كىرگۈزىدۇ؛ ئاخىرىدا، خېرىدار پاكىتنى مۇلازىمېتىرغا ئەۋەتىدۇ. بۇ پاكىت سانلىق مەلۇماتلارنى خېرىداردىن مۇلازىمېتىرغا يەتكۈزەلەيدۇ. بۇ مەشغۇلاتلار تاماملانغاندىن كېيىن، خېرىدار قۇرۇلغان ھالەتكە كىرىدۇ.

سېرۋېر خېرىداردىن جاۋاب پاكىتىنى تاپشۇرۇۋالغاندىن كېيىن، ئۇ يەنە STABLISHED ھالىتىگە ئۆتىدۇ.

يۇقىرىدىكى جەرياندىن كۆرۈۋېلىشقا بولىدۇكى، ئۈچ تەرەپلىك قول ئېلىشىش جەريانىدا، ئۈچىنچى قول ئېلىشىش سانلىق مەلۇماتنى ئېلىپ يۈرۈشكە رۇخسەت قىلىنىدۇ، ئەمما دەسلەپكى ئىككى قول ئېلىشىش ئۇنداق ئەمەس. بۇ سوئال سۆھبەتلەردە كۆپ سورىلىدۇ. ئۈچ تەرەپلىك قول ئېلىشىش تاماملانغاندىن كېيىن، ئىككى تەرەپ STABLISHED ھالىتىگە كىرىدۇ، بۇ ئۇلىنىشنىڭ مۇۋەپپەقىيەتلىك ئورنىتىلغانلىقىنى كۆرسىتىدۇ، بۇ ۋاقىتتا خېرىدار ۋە مۇلازىمېتىر بىر-بىرىگە سانلىق مەلۇمات ئەۋەتىشنى باشلىيالايدۇ.

نېمىشقا ئۈچ قېتىم قول ئېلىشىش؟ ئىككى قېتىم ئەمەس، تۆت قېتىم؟
ئورتاق جاۋاب: «چۈنكى ئۈچ تەرەپلىك قول ئېلىشىش قوبۇل قىلىش ۋە ئەۋەتىش ئىقتىدارىنى كاپالەتلەندۈرىدۇ». بۇ جاۋاب توغرا، ئەمما ئۇ پەقەت يۈزەكى سەۋەب بولۇپ، ئاساسلىق سەۋەبنى ئوتتۇرىغا قويمايدۇ. تۆۋەندە، بۇ مەسىلىنى چوڭقۇر چۈشىنىشىمىز ئۈچۈن، ئۈچ تەرەپلىك قول ئېلىشىشنىڭ سەۋەبلىرىنى ئۈچ جەھەتتىن تەھلىل قىلىمەن.

ئۈچ تەرەپلىك قول ئېلىشىش تارىخىي جەھەتتىن تەكرارلىنىدىغان ئۇلىنىشلارنىڭ باشلىنىشىنىڭ ئۈنۈملۈك ئالدىنى ئالالايدۇ (ئاساسلىق سەۋەب)
ئۈچ تەرەپلىك قول ئېلىشىش ئىككى تەرەپنىڭ ئىشەنچلىك دەسلەپكى تەرتىپ نومۇرىغا ئېرىشكەنلىكىگە كاپالەتلىك قىلىدۇ.
ئۈچ تەرەپلىك قول ئېلىشىش بايلىقنىڭ ئىسراپ بولۇشىنىڭ ئالدىنى ئالىدۇ.

1-سەۋەب: تارىخىي تەكرارلانغان قوشۇلۇشلاردىن ساقلىنىڭ
قىسقىسى، ئۈچ تەرەپلىك قول ئېلىشىشنىڭ ئاساسلىق سەۋەبى كونا قوش ئۇلىنىش باشلىنىش ئۇسۇلى سەۋەبىدىن كېلىپ چىققان قالايمىقانچىلىقنىڭ ئالدىنى ئېلىشتۇر. مۇرەككەپ تور مۇھىتىدا، سانلىق مەلۇمات بولاقلىرىنىڭ يەتكۈزۈلۈشى ھەمىشە بەلگىلەنگەن ۋاقىتقا ئاساسەن نىشان كومپيۇتېرغا ئەۋەتىلمەيدۇ، ھەمدە تور قىستاڭچىلىقى ۋە باشقا سەۋەبلەر تۈپەيلىدىن كونا سانلىق مەلۇمات بولاقلىرى ئالدى بىلەن نىشان كومپيۇتېرغا يېتىپ كېلىشى مۇمكىن. بۇنىڭ ئالدىنى ئېلىش ئۈچۈن، TCP ئۇلىنىشنى ئورنىتىش ئۈچۈن ئۈچ تەرەپلىك قول ئېلىشىش ئۇسۇلىنى قوللىنىدۇ.

ئۈچ تەرەپلىك قول ئېلىشىش تارىخىي تەكرارلىنىشلارنىڭ ئالدىنى ئالىدۇ

بىر خېرىدار تور قىستاڭچىلىقى قاتارلىق ئەھۋاللاردا ئارقا-ئارقىدىن كۆپ SYN ئۇلىنىش قۇرۇش پاكېتلىرىنى ئەۋەتكەندە، تۆۋەندىكى ئەھۋاللار يۈز بېرىشى مۇمكىن:

1- كونا SYN پاكتلىرى ئەڭ يېڭى SYN پاكتلىرىدىن بۇرۇن سېرۋېرغا يېتىپ كېلىدۇ.
2- سېرۋېر كونا SYN پاكېتىنى تاپشۇرۇۋالغاندىن كېيىن، خېرىدارغا SYN + ACK پاكېتىنى جاۋاب قايتۇرىدۇ.
3- خېرىدار SYN + ACK پاكېتىنى تاپشۇرۇۋالغاندا، ئۆزىنىڭ ئەھۋالىغا ئاساسەن ئۇلىنىشنىڭ تارىخىي ئۇلىنىش (تەرتىپ نومۇرىنىڭ مۇددىتى توشقان ياكى ۋاقىت ئۆتكەن) ئىكەنلىكىنى بېكىتىدۇ، ئاندىن ئۇلىنىشنى توختىتىش ئۈچۈن RST پاكېتىنى مۇلازىمېتىرغا ئەۋەتىدۇ.

ئىككى قول ئېلىشىش ئۇسۇلى ئارقىلىق، نۆۋەتتىكى ئۇلىنىشنىڭ تارىخىي ئۇلىنىش ئىكەنلىكىنى بېكىتىشنىڭ ھېچقانداق ئۇسۇلى يوق. ئۈچ تەرەپلىك قول ئېلىشىش ئۇسۇلى ئارقىلىق، خېرىدار ئۈچىنچى بولاقنى ئەۋەتىشكە تەييار بولغاندا، نۆۋەتتىكى ئۇلىنىشنىڭ تارىخىي ئۇلىنىش ئىكەنلىكىنى ئەھۋالغا ئاساسەن بېكىتىشكە بولىدۇ:

1- ئەگەر بۇ تارىخىي ئۇلىنىش بولسا (تەرتىپ نومۇرىنىڭ مۇددىتى توشقان ياكى ۋاقىت ئۆتكەن)، ئۈچىنچى قول ئېلىشىش ئارقىلىق ئەۋەتىلگەن پاكىت تارىخىي ئۇلىنىشنى توختىتىش ئۈچۈن RST پاكىتى بولىدۇ.
2- ئەگەر بۇ تارىخىي ئۇلىنىش بولمىسا، ئۈچىنچى قېتىم ئەۋەتىلگەن پاكىت ACK پاكىتى بولۇپ، ئىككى ئالاقە قىلغۇچى تەرەپ مۇۋەپپەقىيەتلىك ئۇلىنىشنى ئورنىتىدۇ.

شۇڭلاشقا، TCP نىڭ ئۈچ تەرەپلىك قول ئېلىشىشنى ئىشلىتىشىنىڭ ئاساسلىق سەۋەبى، ئۇ تارىخىي ئۇلىنىشلارنىڭ ئالدىنى ئېلىش ئۈچۈن ئۇلىنىشنى باشلايدۇ.

2-سەۋەب: ئىككى تەرەپنىڭ دەسلەپكى تەرتىپ نومۇرىنى ماسلاشتۇرۇش
TCP كېلىشىمىنىڭ ھەر ئىككى تەرىپى تەرتىپ نومۇرىنى ساقلىشى كېرەك، بۇ ئىشەنچلىك يەتكۈزۈشنى كاپالەتلەندۈرۈشنىڭ مۇھىم ئامىلى. تەرتىپ نومۇرى TCP ئۇلىنىشىدا مۇھىم رول ئوينايدۇ. ئۇلار تۆۋەندىكىلەرنى قىلىدۇ:

قوبۇل قىلغۇچى تەكرارلانغان سانلىق مەلۇماتلارنى يوقىتىپ، سانلىق مەلۇماتلارنىڭ توغرىلىقىغا كاپالەتلىك قىلالايدۇ.

قوبۇللىغۇچ سانلىق مەلۇماتلارنىڭ پۈتۈنلۈكىگە كاپالەتلىك قىلىش ئۈچۈن تەرتىپ نومۇرى بويىچە پاكىتلارنى قوبۇل قىلالايدۇ.

● تەرتىپ نومۇرى يەنە بىر تەرەپ تاپشۇرۇۋالغان سانلىق مەلۇمات بولىقىنى ئېنىقلىيالايدۇ، بۇ ئارقىلىق ئىشەنچلىك سانلىق مەلۇمات يەتكۈزۈشنى ئىشقا ئاشۇرالايدۇ.

شۇڭلاشقا، TCP ئۇلىنىشى قۇرۇلغاندا، خېرىدار دەسلەپكى تەرتىپ نومۇرى بىلەن SYN پاكېتلىرىنى ئەۋەتىدۇ ۋە مۇلازىمېتىردىن خېرىدارنىڭ SYN پاكېتىنىڭ مۇۋەپپەقىيەتلىك قوبۇل قىلىنغانلىقىنى كۆرسىتىدىغان ACK پاكېتىنى جاۋاب قايتۇرۇشنى تەلەپ قىلىدۇ. ئاندىن، مۇلازىمېتىر دەسلەپكى تەرتىپ نومۇرى بىلەن SYN پاكېتىنى خېرىدارغا ئەۋەتىدۇ ۋە خېرىدارنىڭ بىر قېتىم ۋە مەڭگۈ جاۋاب قايتۇرۇشىنى ساقلايدۇ، بۇنىڭ بىلەن دەسلەپكى تەرتىپ نومۇرىنىڭ ئىشەنچلىك ھالدا ماسلاشتۇرۇلغانلىقىغا كاپالەتلىك قىلىنىدۇ.

ئىككى تەرەپنىڭ دەسلەپكى تەرتىپ نومۇرىنى ماسلاشتۇرۇڭ

تۆت تەرەپلىك قول ئېلىشىش ئارقىلىق ئىككى تەرەپنىڭ دەسلەپكى تەرتىپ نومۇرىنى ئىشەنچلىك ھالدا ماسلاشتۇرغىلى بولسىمۇ، ئىككىنچى ۋە ئۈچىنچى قەدەملەرنى بىرلا قەدەمگە بىرلەشتۈرۈشكە بولىدۇ، بۇنىڭ نەتىجىسىدە ئۈچ تەرەپلىك قول ئېلىشىش ھاسىل بولىدۇ. قانداقلا بولمىسۇن، ئىككى قول ئېلىشىش پەقەت بىر تەرەپنىڭ دەسلەپكى تەرتىپ نومۇرىنىڭ يەنە بىر تەرەپ تەرىپىدىن مۇۋەپپەقىيەتلىك قوبۇل قىلىنىشىغا كاپالەتلىك قىلالايدۇ، ئەمما ئىككى تەرەپنىڭ دەسلەپكى تەرتىپ نومۇرىنىڭ جەزملەشتۈرۈلۈشىگە كاپالەتلىك قىلغىلى بولمايدۇ. شۇڭا، ئۈچ تەرەپلىك قول ئېلىشىش TCP ئۇلىنىشىنىڭ مۇقىملىقى ۋە ئىشەنچلىكلىكىگە كاپالەتلىك قىلىش ئۈچۈن ئەڭ ياخشى تاللاش.

3-سەۋەب: بايلىقلارنى ئىسراپ قىلىشتىن ساقلىنىڭ
ئەگەر پەقەت «ئىككى قول ئېلىشىش» بولسا، توردا خېرىدارنىڭ SYN تەلىپى توسۇلغاندا، خېرىدار مۇلازىمېتىر ئەۋەتكەن ACK پاكىتىنى قوبۇل قىلالمايدۇ، شۇڭا SYN قايتا ئەۋەتىلىدۇ. قانداقلا بولمىسۇن، ئۈچىنچى قول ئېلىشىش بولمىغاچقا، مۇلازىمېتىر خېرىدارنىڭ ئۇلىنىش ئورنىتىش ئۈچۈن ACK ئېتىراپنامىسىنى تاپشۇرۇۋالغان-ئالمىغانلىقىنى ئېنىقلىيالمايدۇ. شۇڭا، مۇلازىمېتىر پەقەت ھەر بىر SYN تەلىپىنى تاپشۇرۇۋالغاندىن كېيىنلا ئالدىنئالا ئۇلىنىش قۇرالايدۇ. بۇ تۆۋەندىكىلەرنى كەلتۈرۈپ چىقىرىدۇ:

بايلىق ئىسراپچىلىقى: ئەگەر خېرىدارنىڭ SYN تەلىپى توسۇلۇپ، كۆپ SYN پاكېتلىرىنىڭ قايتا-قايتا يەتكۈزۈلۈشىگە سەۋەب بولسا، مۇلازىمېتىر تەلەپنى تاپشۇرۇۋالغاندىن كېيىن كۆپ قېتىم ئارتۇقچە ئىناۋەتسىز ئۇلىنىشلارنى قۇرىدۇ. بۇ مۇلازىمېتىر بايلىقىنىڭ كېرەكسىز ئىسراپ بولۇشىغا ئېلىپ كېلىدۇ.

ئۇچۇرنى ساقلاش: ئۈچىنچى قول ئېلىشىش بولمىغانلىقتىن، مۇلازىمېتىر خېرىدارنىڭ ئۇلىنىش ئورنىتىش ئۈچۈن ACK ئېتىراپنامىسىنى توغرا تاپشۇرۇۋالغان-ئالمىغانلىقىنى بىلەلمەيدۇ. نەتىجىدە، ئۇچۇرلار توردا قاپسىلىپ قالسا، خېرىدار SYN تەلەپلىرىنى قايتا-قايتا يوللاپ، مۇلازىمېتىرنىڭ ئۈزلۈكسىز يېڭى ئۇلىنىش ئورنىتىشىغا سەۋەب بولىدۇ. بۇ تورنىڭ قىستاڭچىلىقى ۋە كېچىكىشىنى ئاشۇرۇپ، تورنىڭ ئومۇمىي ئىقتىدارىغا سەلبىي تەسىر كۆرسىتىدۇ.

بايلىقلارنى ئىسراپ قىلىشتىن ساقلىنىڭ

شۇڭا، تور ئۇلىنىشىنىڭ مۇقىملىقى ۋە ئىشەنچلىكلىكىگە كاپالەتلىك قىلىش ئۈچۈن، TCP بۇ مەسىلىلەرنىڭ يۈز بېرىشىنىڭ ئالدىنى ئېلىش ئۈچۈن ئۈچ تەرەپلىك قول ئېلىشىش ئۇسۇلىنى قوللىنىدۇ.

خۇلاسە
بۇتور پاكېت دەللالىTCP ئۇلىنىش ئورنىتىش ئۈچ تەرەپلىك قول ئېلىشىش ئارقىلىق تاماملىنىدۇ. ئۈچ تەرەپلىك قول ئېلىشىش جەريانىدا، خېرىدار ئالدى بىلەن مۇلازىمېتىرغا SYN بەلگىسى بار بىر بولاق ئەۋەتىدۇ، بۇ ئۇنىڭ ئۇلىنىش ئورنىتىشنى خالايدىغانلىقىنى بىلدۈرىدۇ. خېرىداردىن تەلەپنى تاپشۇرۇۋالغاندىن كېيىن، مۇلازىمېتىر خېرىدارغا SYN ۋە ACK بەلگىسى بار بىر بولاققا جاۋاب قايتۇرىدۇ، بۇ ئۇلىنىش تەلىپىنىڭ قوبۇل قىلىنغانلىقىنى بىلدۈرىدۇ ۋە ئۆزىنىڭ دەسلەپكى تەرتىپ نومۇرىنى ئەۋەتىدۇ. ئاخىرىدا، خېرىدار مۇلازىمېتىرغا ACK بەلگىسى بىلەن جاۋاب قايتۇرۇپ، ئۇلىنىشنىڭ مۇۋەپپەقىيەتلىك ئورنىتىلغانلىقىنى بىلدۈرىدۇ. شۇڭا، ئىككى تەرەپ قۇرۇلغان ھالەتكە كېلىدۇ ۋە بىر-بىرىگە سانلىق مەلۇمات ئەۋەتىشنى باشلىيالايدۇ.

ئادەتتە، TCP ئۇلىنىشىنى قۇرۇش ئۈچۈن ئۈچ تەرەپلىك قول ئېلىشىش جەريانى ئۇلىنىشنىڭ مۇقىملىقى ۋە ئىشەنچلىكلىكىگە كاپالەتلىك قىلىش، تارىخىي ئۇلىنىشلار سەۋەبىدىن قالايمىقانچىلىق ۋە بايلىقلارنىڭ ئىسراپ بولۇشىنىڭ ئالدىنى ئېلىش، ھەمدە ئىككى تەرەپنىڭ سانلىق مەلۇمات قوبۇل قىلىش ۋە ئەۋەتىشىگە كاپالەتلىك قىلىش ئۈچۈن لايىھەلەنگەن.


ئېلان قىلىنغان ۋاقىت: 2025-يىلى 1-ئاينىڭ 8-كۈنى