banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài net  XML
  [Programming]   Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài net 22/05/2008 03:18:30 (+0700) | #1 | 131894
star107
Member

[Minus]    0    [Plus]
Joined: 19/04/2005 12:52:35
Messages: 4
Offline
[Profile] [PM]
Em đang học về lập trình mạng qua Socket, vấn đề có vẻ đơn giản nhưng khi e muốn mở một server lắng nghe từ một máy trong mạng LAN và kết nối đến server đó từ ngoài mạng LAN đó thì không thể làm được.
Tất nhiên là máy này chạy win XP bình thường giống như cách kết nối của backdoor hoặc là P2P của Skype vậy.
Bác nào biết thì giúp em một tay, em cảm tạ lắm lắm
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài 23/05/2008 13:00:06 (+0700) | #2 | 132309
[Avatar]
ngoalong
HVA Friend

Joined: 22/03/2003 04:33:38
Messages: 111
Offline
[Profile] [PM]
bạn cần config cái router để nó map địa chỉ IP thực với địa chỉ IP của mạng LAN, sử dụng chức năng Port Forwarding
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài net 24/05/2008 04:30:34 (+0700) | #3 | 132422
star107
Member

[Minus]    0    [Plus]
Joined: 19/04/2005 12:52:35
Messages: 4
Offline
[Profile] [PM]
Thanks bạn nhưng mà cách đó làm với máy mình thôi chứ làm với máy người khác thì vô hiệu.
Minh đang viết chức năng send file cho 1 chương trình chat trong mạng P2P giống như Gtalk hoặc Skype vậy. Để truyền trực tiếp giữa 2 máy.
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài 24/05/2008 08:50:30 (+0700) | #4 | 132468
[Avatar]
ngoalong
HVA Friend

Joined: 22/03/2003 04:33:38
Messages: 111
Offline
[Profile] [PM]
gtalk và skype client cái trên máy của 2 PC chát được với nhau là qua 1 Server, đó là mô hình client server chứ không phải P2P. Các mạng P2P như emule, bittorent, mIRC, edonkey ... đều yêu cầu bạn "mở Port" thì mới có thể sử dụng.
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài 30/05/2008 03:12:32 (+0700) | #5 | 133310
star107
Member

[Minus]    0    [Plus]
Joined: 19/04/2005 12:52:35
Messages: 4
Offline
[Profile] [PM]
Đúng là Gtalk và Skype là mô hình Client - Server nhung khi sử dụng chức năng send file hoặc voice thì nó lại kết nối trực tiếp giữa 2 máy.

Mình cũng biết là phải mở một port lắng nghe trên máy thì mới có thể kết nối được và mở port không phải là việc khó nhưng mà vấn đề mắc phải là nếu một máy ở trong mang LAN thi có cùng một địa chỉ WAN giống nhau nên nếu nó mở port thì máy ở ngoài LAN cũng không thể kết nối đến được.

Giải pháp cho vấn đề này là NAT tuy nhiên NAT chỉ sử dụng được đối với máy của mình. Nếu mình muốn kết nối đến máy của người khác thì NAT không thể xài được.

Rất mong các bác hướng dẫn cho. Chỉ cần cho e cái tên của giao thức cũng được e sẽ tự tìm by myself.
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài net 05/06/2008 13:13:47 (+0700) | #6 | 134227
[Avatar]
ngoalong
HVA Friend

Joined: 22/03/2003 04:33:38
Messages: 111
Offline
[Profile] [PM]
Tôi chưa từng chứng minh được rằng Yahoo send file theo kiểu P2P. Có người đã làm thử trong cùng 1 mạng LAN, send file với dung lượng lớn đạt tốc độ rất nhanh. 1 cách giải thích duy nhất là đầu tiên YM xác định xem 2 cilent có trao đổi được theo cách P2P không? Bằng 1 vài gói tin thăm dò và xác định địa chỉ đích cần gửi thông qua Y server. Nếu OK thì sẽ send theo cách này. Nếu fail sẽ gửi theo mô hình Client-Server.

Về lý thuyết, 2 máy tính nối qua router mà không sử dụng NAT để "mở port" thì sẽ không thể có chuyện 1 máy "lắng nghe - listen" và 1 máy "kết nối tới - connect to" -> Yêu cầu đầu tiên của mạng P2P.
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài net 05/06/2008 14:06:09 (+0700) | #7 | 134237
[Avatar]
Mr.vinhhai
Member

[Minus]    0    [Plus]
Joined: 20/03/2007 01:28:05
Messages: 26
Location: Dreams
Offline
[Profile] [PM]
@ngoalong

Về lý thuyết, 2 máy tính nối qua router mà không sử dụng NAT để "mở port" thì sẽ không thể có chuyện 1 máy "lắng nghe - listen" và 1 máy "kết nối tới - connect to" -> Yêu cầu đầu tiên của mạng P2P. 

Em chưa từng nghe ai nói là sử dụng NAT để Open port được ạh, anh có thể giải thích kỹ hơn cho em về vấn đề dùng NAT để mở Port được không ạh?
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài 05/06/2008 15:32:54 (+0700) | #8 | 134240
[Avatar]
tmd
Member

[Minus]    0    [Plus]
Joined: 28/06/2006 03:39:48
Messages: 2951
Offline
[Profile] [PM]
Đây là link wiki giới thiệu về Yahoo! Messenger Protocol, các thông tin có liên quan tới protocol, traffic khi YM hoạt động, lập trình liên quan tới YM,...
http://en.wikipedia.org/wiki/YMSG
3 giai đoạn của con... người, ban đầu dek biết gì thì phải thăm dò, sau đó biết rồi thì phải thân thiết, sau cùng khi quá thân thiết rồi thì phải tình thương mến thương. Nhưng mà không thương được thì ...
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài net 06/06/2008 05:54:07 (+0700) | #9 | 134309
star107
Member

[Minus]    0    [Plus]
Joined: 19/04/2005 12:52:35
Messages: 4
Offline
[Profile] [PM]
Mình đã kiếm ra rồi, thank các bạn đã trả lời.
Post lên cho a e nào muốn nghiên cứu thì tim hiểu luôn:
Giao thức sử dụng : STUN, TURN và ICE
Tuy nhiên mình vẫn chưa biết cách xài smilie ai biết cách xài 3 thằng này thì chỉ mình với nhé smilie
Continue research smilie
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài 06/06/2008 06:17:26 (+0700) | #10 | 134312
[Avatar]
K4i
Moderator

Joined: 18/04/2006 09:32:13
Messages: 635
Location: Underground
Offline
[Profile] [PM]

star107 wrote:
Đúng là Gtalk và Skype là mô hình Client - Server nhung khi sử dụng chức năng send file hoặc voice thì nó lại kết nối trực tiếp giữa 2 máy.

Mình cũng biết là phải mở một port lắng nghe trên máy thì mới có thể kết nối được và mở port không phải là việc khó nhưng mà vấn đề mắc phải là nếu một máy ở trong mang LAN thi có cùng một địa chỉ WAN giống nhau nên nếu nó mở port thì máy ở ngoài LAN cũng không thể kết nối đến được.

Giải pháp cho vấn đề này là NAT tuy nhiên NAT chỉ sử dụng được đối với máy của mình. Nếu mình muốn kết nối đến máy của người khác thì NAT không thể xài được.

Rất mong các bác hướng dẫn cho. Chỉ cần cho e cái tên của giao thức cũng được e sẽ tự tìm by myself.
 


Hi, star107.
Mình chưa sử dụng GTalk nên ko rõ nhưng Skype chắc chắn là khi send file giữa hai máy thì việc truyền tải file là trực tiếp giữa hai máy. Tuy nhiên để làm được việc này thì trước khi send file cả 2 máy đều phải bắt tay với nhau thông qua server của Skype. Điển hình là việc nếu send file với 2 máy cùng mạng LAN thông qua skype thì sẽ rất nhanh :d.

Hồi trước mình có đọc về cái này nhưng chưa thử code vì cảm giác trình vẫn còn còi smilie . Đúng là bình thường thì mình phải NAT với các ứng dụng P2P nhưng Skype sử dụng một kỹ thuật lập trình là "NAT Traversal" hay gọi một cách nôm na là kỹ thuật đục lỗ smilie. Nhờ kĩ thuật lập trình này mà việc send file giữa hai user của Skype hoàn toàn là P2P mà không cần phải mở bất kỳ một port nào. Bạn có thể tham khảo một bài viết trên Wikipedia về vấn đề này (search theo đúng từ khóa nhé), Hoặc một article mô tả khá chi tiết về trò này của Skype :d. Link tham khảo ở http://www.heise-online.co.uk/security/How-Skype-Co-get-round-firewalls--/features/82481. Ở BlackHat Conference có một bài viết phân tích về các giao thức của Skype. Bạn có thể lục trên BlackHat Media để tham khảo.

Còn về Yahoo thì theo mình biết, việc send file giữa hai client vẫn phải thông qua Server chứ không có P2P như Skype.

:d

Nếu bạn thực hiện được thì khi nào support mình nhé.
Sống là để không chết chứ không phải để trở thành anh hùng
[Up] [Print Copy]
  [Question]   Re: Hỏi về cách lập trình kết nối đến máy trong một mạng LAN từ ngoài 06/06/2008 09:50:38 (+0700) | #11 | 134339
[Avatar]
ngoalong
HVA Friend

Joined: 22/03/2003 04:33:38
Messages: 111
Offline
[Profile] [PM]
Giao thức sử dụng : STUN, TURN và ICE đều dựa trên nền UDP/IP

Để máy A<[192.168.1.x]------Router1[203.162.x.x]--------------------[210.123.x.x]Router2----[10.1.1.x]->B

Thì A phải gửi qua Router 1 đến Router2 của B (cái này xác định đc) và Router2 của B chuyển gói tin về máy B
Câu hỏi đặt ra là làm thế nào để Router2 của B biết gói tin đó chuyển cho B chứ không phải cho C cùng chung Router2 ?

Đây là 1 bài giảng về VoIP của Yahoo

http://www.youtube.com/watch?v=9MWYw0fltr0&eurl=
http%3A%2F%2Fwww%2Evoip%2Dnews%2Ecom%2Ffeature%2Ftop%2Dvoip%2Dvideos%2D051707%2F
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|