Stun server là gì? Tổng quan về Stun server mà bạn cần biết
Thịnh Văn Hạnh
09/03/2026
3804 Lượt xem
Chia sẻ bài viết
Khi hai thiết bị trên Internet muốn kết nối trực tiếp với nhau, chúng thường gặp khó khăn do sự tồn tại của NAT router và firewall. Các thiết bị nằm phía sau NAT thường không biết chính xác địa chỉ IP công khai của mình, khiến việc thiết lập kết nối peer-to-peer trở nên phức tạp.
Để giải quyết vấn đề này, STUN server được phát triển nhằm giúp thiết bị xác định IP public và port mapping trên Internet. Nhờ đó, các ứng dụng như WebRTC, VoIP hay video call có thể tạo kết nối trực tiếp hiệu quả. Trong bài viết này, chúng ta sẽ cùng tìm hiểu STUN server là gì, cách STUN server hoạt động và vai trò của nó trong NAT traversal.

Tóm Tắt Bài Viết
STUN Server là gì?
STUN server (Session Traversal Utilities for NAT server) là một máy chủ mạng giúp các thiết bị nằm phía sau NAT router xác định được địa chỉ IP công khai (public IP) và port mapping của mình trên Internet. Khi một thiết bị kết nối ra ngoài mạng, NAT router sẽ chuyển đổi địa chỉ IP nội bộ thành IP công khai. Tuy nhiên, thiết bị thường không biết chính xác địa chỉ IP công khai này là gì. STUN server được tạo ra để giải quyết vấn đề đó.
Khi thiết bị gửi yêu cầu đến STUN server, máy chủ sẽ phân tích gói tin và phản hồi lại thông tin về IP public và cổng mạng mà NAT router đã gán cho thiết bị. Nhờ thông tin này, thiết bị có thể xác định được cách các máy khác trên Internet nhìn thấy mình. Đây là bước quan trọng để thiết lập kết nối peer-to-peer giữa hai thiết bị mà không cần thông qua máy chủ trung gian.
- Thiết bị gửi yêu cầu kết nối đến STUN server.
- STUN server nhận yêu cầu và xác định IP public cùng port mapping của thiết bị.
- Máy chủ gửi lại thông tin này cho thiết bị.
- Thiết bị sử dụng dữ liệu đó để thiết lập kết nối trực tiếp với thiết bị khác trên Internet.
Nhờ có STUN server, các ứng dụng truyền thông thời gian thực có thể hoạt động ổn định ngay cả khi người dùng đang nằm sau NAT router hoặc firewall. Điều này giúp tối ưu kết nối mạng, giảm độ trễ và tăng hiệu quả truyền dữ liệu giữa các thiết bị.

STUN server được dùng trong trường hợp nào?
Trong thực tế, STUN server được sử dụng rộng rãi trong nhiều hệ thống truyền thông Internet. Bất kỳ ứng dụng nào cần thiết lập kết nối trực tiếp giữa hai thiết bị đều có thể sử dụng STUN để phát hiện IP public và hỗ trợ NAT traversal.
Một số ứng dụng phổ biến sử dụng STUN server bao gồm:
- VoIP call: các dịch vụ gọi điện qua Internet như SIP hoặc softphone.
- Video call: các ứng dụng họp trực tuyến hoặc gọi video.
- WebRTC: công nghệ truyền thông thời gian thực trên trình duyệt.
- Livestream: các nền tảng phát trực tiếp.
- Online gaming: trò chơi trực tuyến yêu cầu kết nối peer-to-peer.
Trong những hệ thống này, STUN server giúp thiết bị xác định đường kết nối tối ưu để giao tiếp trực tiếp với nhau thay vì phải truyền toàn bộ dữ liệu qua máy chủ trung gian. Điều này giúp giảm độ trễ mạng và tiết kiệm băng thông hệ thống.
Ví dụ thực tế về STUN server
Giả sử người A muốn gọi video cho người B, và cả hai đều đang kết nối Internet thông qua NAT router tại nhà. Trong trường hợp này, hai thiết bị không thể tự biết địa chỉ IP công khai của nhau.
Quá trình sử dụng STUN server sẽ diễn ra như sau:
- Thiết bị của A gửi một yêu cầu đến STUN server.
- STUN server phản hồi và cung cấp IP public cùng port mapping của A.
- Thiết bị của B cũng thực hiện thao tác tương tự với STUN server.
Sau khi cả hai thiết bị biết được địa chỉ IP công khai của nhau, chúng có thể thiết lập kết nối peer-to-peer trực tiếp.
Nhờ STUN server, quá trình thiết lập kết nối giữa hai thiết bị diễn ra nhanh hơn. Đồng thời, dữ liệu có thể truyền trực tiếp giữa hai bên mà không cần đi qua nhiều máy chủ trung gian. Điều này giúp giảm độ trễ và cải thiện chất lượng cuộc gọi hoặc truyền dữ liệu.
Khái quát về giao thức STUN
Trước khi hiểu rõ STUN server là gì, chúng ta cần nắm được khái niệm về giao thức STUN. Đây là nền tảng kỹ thuật giúp các hệ thống mạng vượt qua rào cản của NAT để thiết lập kết nối trực tiếp giữa các thiết bị.
STUN (Session Traversal Utilities for NAT) là một giao thức mạng được thiết kế để giúp thiết bị phía sau NAT xác định thông tin kết nối của mình trên Internet. Thông qua STUN, thiết bị có thể biết được cách mà mạng bên ngoài nhìn thấy nó.
Cụ thể, giao thức STUN cho phép thiết bị xác định các thông tin quan trọng như:
- Địa chỉ IP công khai (public IP) của thiết bị
- Port mapping mà NAT router đã gán
- Loại NAT router mà thiết bị đang sử dụng
Những thông tin này giúp các hệ thống mạng thiết lập kết nối peer-to-peer giữa hai thiết bị nằm ở các mạng khác nhau.
Trong hầu hết các trường hợp, STUN protocol sử dụng UDP (User Datagram Protocol) để truyền dữ liệu. UDP được ưu tiên vì có tốc độ truyền nhanh và phù hợp với các ứng dụng thời gian thực như VoIP, video call hoặc WebRTC.

STUN protocol hoạt động dựa trên NAT traversal
Trong nhiều mạng nội bộ như mạng gia đình, văn phòng hoặc doanh nghiệp, các thiết bị không sử dụng trực tiếp địa chỉ IP công khai. Thay vào đó, chúng sử dụng địa chỉ IP riêng (private IP).
Một số dải địa chỉ IP nội bộ phổ biến gồm:
- 192.168.x.x
- 10.x.x.x
- 172.16.x.x – 172.31.x.x
Những địa chỉ này chỉ có giá trị trong mạng nội bộ và không thể truy cập trực tiếp từ Internet. Khi thiết bị truy cập ra bên ngoài, NAT router sẽ thực hiện việc chuyển đổi địa chỉ IP nội bộ sang IP public.
Quá trình này được gọi là Network Address Translation (NAT).
Tuy nhiên, NAT cũng tạo ra một vấn đề quan trọng: hai thiết bị nằm phía sau NAT thường không thể biết địa chỉ IP công khai của nhau. Điều này khiến việc thiết lập kết nối trực tiếp giữa hai thiết bị trở nên khó khăn.
Đây chính là lúc STUN server phát huy vai trò của mình. Khi thiết bị gửi yêu cầu đến STUN server, máy chủ sẽ phản hồi lại địa chỉ IP public và port mapping mà NAT router đã gán. Nhờ vậy, thiết bị có thể sử dụng thông tin này để thiết lập kết nối trực tiếp với peer khác trên Internet.
STUN sử dụng cổng nào?
Trong quá trình hoạt động, STUN server cần sử dụng một cổng mạng để giao tiếp với client.
Theo tiêu chuẩn của giao thức STUN, cổng mặc định thường được sử dụng là:
UDP port 3478
Đây là cổng được quy định trong các tài liệu tiêu chuẩn của STUN protocol. Khi STUN client gửi request đến máy chủ, gói tin sẽ được truyền qua cổng này.
Ngoài UDP, một số hệ thống STUN server cũng có thể hỗ trợ các giao thức khác như:
TCP
TLS
Những giao thức này thường được sử dụng trong các môi trường có yêu cầu bảo mật cao hoặc khi mạng chặn UDP.
Tuy nhiên, UDP vẫn là giao thức phổ biến nhất trong STUN vì một số lý do quan trọng:
- Độ trễ thấp, phù hợp với truyền thông thời gian thực
- Hiệu suất cao, không cần thiết lập kết nối phức tạp
- Phù hợp với các ứng dụng như WebRTC, VoIP và livestream
Các loại NAT phổ biến
Khả năng hoạt động của STUN server phụ thuộc nhiều vào loại NAT router mà thiết bị đang sử dụng. Mỗi loại NAT có cách xử lý port mapping và kết nối mạng khác nhau, từ đó ảnh hưởng đến việc thiết lập kết nối peer-to-peer giữa các thiết bị.
|
Loại NAT |
Khả năng hoạt động với STUN |
|
Full Cone NAT |
Hoạt động rất tốt |
|
Restricted Cone NAT |
Hoạt động |
|
Port Restricted NAT |
Hoạt động |
|
Symmetric NAT |
Thường cần TURN server |
Nhìn chung, STUN server hoạt động hiệu quả với các loại NAT đơn giản như Full Cone hoặc Restricted NAT. Tuy nhiên, nếu mạng sử dụng Symmetric NAT, việc kết nối trực tiếp thường không khả thi và hệ thống sẽ cần TURN server để chuyển tiếp dữ liệu qua máy chủ trung gian.
STUN Server hoạt động như thế nào?
Để giúp các thiết bị nằm sau NAT router có thể thiết lập kết nối trực tiếp với nhau, STUN server sử dụng cơ chế trao đổi dữ liệu giữa client và server. Quá trình này diễn ra khá nhanh và dựa trên mô hình request – response, trong đó thiết bị gửi yêu cầu đến STUN server và nhận lại thông tin về địa chỉ IP công khai của mình. Nhờ vậy, thiết bị có thể biết được cách mà Internet nhận diện nó và sử dụng thông tin đó để kết nối với thiết bị khác.
Bước 1: Client gửi yêu cầu đến STUN server
Thiết bị nằm phía sau NAT router sẽ gửi một STUN request đến STUN server thông qua Internet. Trong yêu cầu này thường bao gồm các thông tin như địa chỉ IP nội bộ, port nội bộ và một số thông tin kết nối cơ bản. Khi gói tin được gửi ra ngoài mạng, NAT router sẽ chuyển đổi địa chỉ IP nội bộ thành IP public và gán một port mapping tương ứng.
Bước 2: STUN server tiếp nhận và xử lý yêu cầu
Sau khi nhận được request từ client, STUN server sẽ phân tích gói tin và ghi nhận các thông tin mà nó nhìn thấy từ phía Internet. Cụ thể, máy chủ sẽ xác định địa chỉ IP public của client và port mapping mà NAT router đã tạo. Đây là những thông tin mà thiết bị phía sau NAT không thể tự biết được nếu không có sự hỗ trợ của STUN server.
Bước 3: STUN server phản hồi thông tin cho client
Khi quá trình phân tích hoàn tất, STUN server sẽ gửi phản hồi lại cho thiết bị. Phản hồi này chứa các dữ liệu quan trọng như public IP, public port và loại NAT router. Sau khi nhận được thông tin này, thiết bị có thể chia sẻ địa chỉ kết nối của mình với peer khác để thiết lập kết nối peer-to-peer.
Tóm lại, STUN server đóng vai trò như một công cụ giúp thiết bị phía sau NAT xác định vị trí của mình trên Internet. Nhờ quá trình request – response đơn giản nhưng hiệu quả này, các ứng dụng như WebRTC, VoIP hay video call có thể thiết lập kết nối trực tiếp giữa các thiết bị với độ trễ thấp và hiệu suất cao.
STUN Client là gì?
Sau khi hiểu STUN server là gì, chúng ta cũng cần tìm hiểu về STUN client – thành phần đóng vai trò khởi tạo quá trình trao đổi thông tin với STUN server. Nếu STUN server là máy chủ cung cấp thông tin kết nối, thì STUN client chính là thiết bị hoặc ứng dụng gửi yêu cầu để nhận các thông tin đó.
STUN client là thành phần mạng có nhiệm vụ gửi yêu cầu đến STUN server nhằm xác định địa chỉ IP công khai (public IP) và port mapping mà NAT router đã gán cho thiết bị. Thông tin này rất quan trọng để thiết bị có thể giao tiếp trực tiếp với các thiết bị khác trên Internet.
Có thể hiểu đơn giản cơ chế hoạt động giữa hai thành phần này như sau:
STUN client gửi request đến STUN server thông qua Internet.
STUN server xử lý yêu cầu và phản hồi thông tin IP public cùng port mapping.
STUN client nhận dữ liệu này và sử dụng nó để thiết lập kết nối peer-to-peer với thiết bị khác.
Nhờ cơ chế này, các ứng dụng truyền thông thời gian thực có thể vượt qua giới hạn của NAT router và thiết lập kết nối trực tiếp giữa các thiết bị.
STUN client thường nằm ở đâu?
Trong thực tế, STUN client không phải là một thiết bị riêng biệt mà thường được tích hợp trực tiếp trong các ứng dụng hoặc hệ thống mạng. Nó có thể hoạt động trong nhiều môi trường khác nhau, tùy thuộc vào loại ứng dụng sử dụng STUN protocol.
Một số môi trường phổ biến nơi STUN client được triển khai gồm:
- Trình duyệt web hỗ trợ WebRTC như Chrome, Firefox hoặc Edge.
- Ứng dụng VoIP dùng để gọi điện qua Internet.
- Phần mềm video call hoặc họp trực tuyến.
- Server hội nghị hoặc hệ thống truyền thông thời gian thực.
Trong các ứng dụng WebRTC, STUN client thường được tích hợp trực tiếp trong WebRTC API của trình duyệt. Khi người dùng bắt đầu cuộc gọi video hoặc truyền dữ liệu thời gian thực, WebRTC sẽ tự động gửi yêu cầu đến STUN server để xác định IP public của thiết bị.
Vai trò của STUN client trong kết nối mạng
Trong quá trình thiết lập kết nối trực tiếp giữa hai thiết bị, STUN client đóng vai trò là thành phần khởi tạo và xử lý thông tin kết nối. Nó giúp thiết bị hiểu được cách mà Internet nhìn thấy mình và sử dụng dữ liệu đó để tạo kết nối với peer khác.
Quá trình hoạt động của STUN client thường diễn ra theo các bước sau:
- Gửi request đến STUN server để yêu cầu xác định địa chỉ IP công khai.
- Nhận phản hồi từ STUN server bao gồm IP public và port mapping.
- Chia sẻ thông tin kết nối với peer khác thông qua hệ thống signaling.
- Thiết lập kết nối trực tiếp giữa hai thiết bị bằng cơ chế peer-to-peer.
Nhờ sự phối hợp giữa STUN client và STUN server, các ứng dụng truyền thông thời gian thực như WebRTC, VoIP, livestream hoặc video call có thể hoạt động ổn định ngay cả khi người dùng đang ở sau NAT router hoặc firewall. Điều này giúp cải thiện hiệu suất truyền dữ liệu và giảm độ trễ trong quá trình giao tiếp giữa các thiết bị.
STUN Server vs TURN Server
Trong các hệ thống truyền thông thời gian thực như WebRTC hoặc VoIP, hai thành phần thường được sử dụng để hỗ trợ kết nối giữa các thiết bị là STUN server và TURN server. Cả hai đều giúp vượt qua rào cản của NAT router và firewall, tuy nhiên cách thức hoạt động và mục đích sử dụng của chúng có nhiều điểm khác biệt. Việc hiểu rõ sự khác nhau giữa STUN và TURN sẽ giúp bạn lựa chọn giải pháp phù hợp khi thiết kế hệ thống mạng hoặc ứng dụng realtime.
- STUN server giúp thiết bị tìm IP public: STUN server cho phép thiết bị phía sau NAT xác định địa chỉ IP công khai và port mapping của mình trên Internet. Sau khi biết được thông tin này, thiết bị có thể chia sẻ địa chỉ kết nối với thiết bị khác để thiết lập kết nối peer-to-peer trực tiếp, giúp giảm độ trễ khi truyền dữ liệu.
- TURN server đóng vai trò relay dữ liệu: Không giống STUN, TURN server hoạt động như một máy chủ trung gian. Khi hai thiết bị không thể kết nối trực tiếp với nhau do NAT hoặc firewall phức tạp, dữ liệu sẽ được truyền từ thiết bị A đến TURN server, sau đó TURN server chuyển tiếp đến thiết bị B.
- STUN giúp kết nối nhanh hơn và tiết kiệm tài nguyên: Vì dữ liệu được truyền trực tiếp giữa hai thiết bị nên khi sử dụng STUN server, độ trễ mạng thường thấp và không tiêu tốn nhiều tài nguyên máy chủ. Đây là lý do STUN thường được ưu tiên trong các hệ thống WebRTC.
- TURN được dùng khi STUN không thể thiết lập kết nối: Trong các trường hợp mạng sử dụng Symmetric NAT, firewall chặn UDP hoặc cấu hình NAT phức tạp, STUN server không thể thiết lập kết nối peer-to-peer. Khi đó hệ thống sẽ sử dụng TURN server để đảm bảo dữ liệu vẫn được truyền giữa các thiết bị.
Tóm lại, STUN server và TURN server thường được sử dụng kết hợp trong các hệ thống truyền thông Internet. STUN giúp thiết lập kết nối trực tiếp để giảm độ trễ, trong khi TURN đóng vai trò dự phòng để chuyển tiếp dữ liệu khi kết nối peer-to-peer không khả thi.
STUN Server trong WebRTC
Trong các ứng dụng truyền thông thời gian thực hiện nay, WebRTC là công nghệ được sử dụng rất phổ biến. WebRTC cho phép các trình duyệt hoặc ứng dụng thiết lập kết nối trực tiếp để truyền video, âm thanh và dữ liệu mà không cần cài đặt plugin. Tuy nhiên, khi các thiết bị nằm sau NAT router, việc kết nối trực tiếp sẽ gặp nhiều khó khăn. Lúc này, STUN server đóng vai trò quan trọng giúp thiết bị xác định thông tin kết nối để thiết lập giao tiếp với nhau.
- Xác định địa chỉ IP public của thiết bị: Trong WebRTC, thiết bị thường nằm sau NAT router nên không biết địa chỉ IP công khai của mình. STUN server sẽ giúp trình duyệt xác định IP public và port mapping mà NAT router đã gán.
- Tìm đường kết nối peer-to-peer giữa các thiết bị: Sau khi biết được địa chỉ IP public, thiết bị có thể chia sẻ thông tin này với peer còn lại. Nhờ vậy, WebRTC có thể thiết lập kết nối trực tiếp giữa hai thiết bị mà không cần truyền toàn bộ dữ liệu qua máy chủ trung gian.
- Hỗ trợ quá trình ICE candidate gathering: Trong WebRTC, các thiết bị sẽ thu thập nhiều phương án kết nối khác nhau gọi là ICE candidate. STUN server giúp tạo ra các candidate dựa trên địa chỉ IP public, từ đó WebRTC có thể lựa chọn phương thức kết nối tối ưu nhất.
- Thiết lập kết nối trực tiếp giữa hai người dùng: Sau khi trao đổi ICE candidate thông qua signaling server, hai thiết bị sẽ chọn được đường kết nối phù hợp và bắt đầu truyền dữ liệu trực tiếp với nhau.
Tóm lại, STUN server là thành phần quan trọng trong hệ thống WebRTC vì nó giúp thiết bị phía sau NAT xác định địa chỉ IP công khai và hỗ trợ quá trình thiết lập kết nối peer-to-peer. Nhờ STUN server, các ứng dụng như video call, voice call hoặc truyền dữ liệu realtime có thể hoạt động nhanh chóng và ổn định trên Internet.
STUN server là một thành phần quan trọng giúp các thiết bị phía sau NAT router xác định địa chỉ IP công khai và port mapping trên Internet. Nhờ đó, các hệ thống truyền thông thời gian thực như WebRTC, VoIP hay video call có thể thiết lập kết nối peer-to-peer nhanh chóng và hiệu quả. Việc sử dụng STUN server giúp giảm độ trễ, tối ưu đường truyền và cải thiện chất lượng kết nối giữa các thiết bị. Trong nhiều trường hợp, STUN server còn được kết hợp với TURN server để đảm bảo kết nối luôn ổn định khi mạng có cấu hình NAT phức tạp hoặc firewall chặn kết nối trực tiếp.
>> Có thể bạn quan tâm:


































