AdminTalk - Talk to Learn

Navigation
Go Back   AdminTalk - Talk to Learn > Computer Supports and Discussion > Operating System > Hệ điều hành Linux
Hệ điều hành Linux Những thông tin, kiến thức hay, cơ bản, thủ thuật và kinh nghiệm khi sử dụng trên các hệ điều hành Linux

Đề mục chính

Cấu trúc diễn đàn
Thông tin tổng hợp
Thông báo và quy định chung
Đóng góp ý kiến
Những bài viết có giá trị
Tin tức công nghệ
•• Tin tức công nghệ thông tin
•• Doanh Nghiệp & Người Tiêu Dùng
Premium Server, Hosting Support
Web Hosting / Domain
•• Kiến thức cơ bản về Web Hosting/Domain
•• Plesk - CPanel
Server / VPS
•• Kiến thức cơ bản Server - VPS
•• Server Review/ Hardware
•• Mail Server - AntiSPAM
Virtuozzo - VMWare - HyperV
•• For Windows
•• For Linux
Security
•• Mạng Wan - Lan
•• Internet - Virus - Hacker
VoIP
•• Kiến Thức Cơ Bản VoIP
•• Phần Cứng VoIP
•• Phần Mềm VoIP
•• Nhà cung cấp VoIP
Server Operating System
Linux Server
Windows Server 200x
Computer Supports and Discussion
Operating System
•• Hệ điều hành Linux
•• Hệ điều hành Windows
•• Hệ điều hành Mac
•• Hệ điều hành Chrome
Laptop, Netbook
Hardware
•• Cpu Intel
•• Cpu AMD
•• PSU, Overclocking & Cooling
•• Mainboard & Memory
•• Đồ họa máy tính
•• Kinh nghiệm
Software
•• Linux Apps
•• Windows Apps
Webmaster Area
Webmaster talk
Programming Language
•• HTML & CSS
•• PHP
•• C++ / C#
•• .NET
•• Java
•• Other
Graphic & Mutimedia
SEO (Search Engine Optimization)
Browsers
•• Mozilla Firefox
•• Chrome
•• Internet Explorer
Thủ Thuật Internet
Thương mại điện tử
•• Hình thức thanh toán
•• Giải pháp
HiTech, Mobile, Movies, Music, eBooks, Relax
Tablet PC
•• iPad
Mobile
•• iPhone
•• BlackBerry
•• Others
Movies
•• Download phim HD
•• Download phim DVD
Music
•• Download nhạc Lossless Album
•• Download nhạc Lossless tuyển chọn
eBooks - Tài liệu
•• Tin học - Lập trình
•• Khoa học - Kỹ thuật
•• Ngoại Ngữ
•• Tutorials - Training
•• Kinh tế
•• Thể Loại Khác
Bài học trong cuộc sống
AdminTalk – Talk to You
Introduce Youself
Off topic/ Chatting
Mua bán - Rao vặt - Tuyển dụng
Quảng cáo
Tuyển dụng

Bầu chọn mới nhất
Bạn nghĩ sao về công nghệ USB 3.0 ?

Rất tuyệt! Sẽ sử dụng ngay nếu được bán trên thị trường: 47.37%

Tốt hơn USB 2.0 , nhưng giá có thể mắc hơn nhiều: 42.11%

Bình thường thôi, công nghệ luôn thay đổi mà: 10.53%

Không quan tâm lắm: 0%
Voters: 38. You may not vote on this poll

Thống kê
Đề tài: 10641
Bài gửi: 12205
Thành viên: 20,207
Thành viên tích cực: 81
Xin cùng nhau chào đón thành viên mới nhất: buixuantu
Kỷ lục: 624 người đã ghé thăm 17/11/2010 lúc 06:16 AM.
Thành viên mới:
Hôm qua
- buixuantu
Hôm qua
- baophuc0711
08/02/2012
- ddvtien
08/02/2012
- thanhtam1028
08/02/2012
- goodhealthvn1
08/02/2012
- honghobao286
07/02/2012
- condau
07/02/2012
- timlaibautroi7408
07/02/2012
- NguyenLien
07/02/2012
- quydona

Số người đang xem
View Who's Online Thành viên: 2
Khách: 74
Tổng: 76
Nhóm: 0
Nhóm:  
Thành viên:  aviomobile, aviovn8
Mở Sổ Bạn Bè

Trả lời
 
LinkBack Ðiều Chỉnh Kiếm Trong Bài Xếp Bài

  #1 (permalink)
Old 29/05/2009, 08:40 AM
Tổng quan kiến trúc Linux networking stack

hieuapt
An inter Admin
love talking
 
Tham gia ngày: Mar 2009
Bài gởi: 108
Thanks: 0
Thanked 5 Times in 4 Posts
VP: 1.00
Donate
Em tìm được tài liệu này trên mạng, theo quan điểm của mình, xét một cách tổng quan, nó đã trình bày được những nét đặc trưng trong cách thức tổ chức kiến trúc mạng của Linux. Mọi người đọc và đưa ra ý kiến nhận xét giúp em. Em thật sự cần những đóng góp của các anh và các bạn để hiểu rõ hơn tính đúng đắn của vấn đề đưa ra trong tài liệu này. Mọi người có thể đừng băn khoăn quá về các hàm được nêu ở dưới đây, chỉ chú trọng vào các bước trong quá trình để hình dung quả trình xử lý của một gói tin trong Linux

Tạm dịch:

Xét ở khía cạnh người dùng, hoạt động mạng trong HĐH Linux cũng được qui chiếu theo mô hình chuẩn 7 lớp OSI, nhưng chỉ tập trung vào 4 lớp, đó là các lớp ứng dụng (Application) Lớp giao vận ( Transport ) Lớp mạng ( Network ) và lớp liên kết ( Link Layer ) giống như mô hình 4 lớp của bộ giao thức TCP/IP.

Xét ở khía cạnh hệ điều hành, chỉ có lớp liên kết là có chút đặc điểm hơi khác với chức năng của lớp này trong mô hình 4 lớp của bộ giao thức TCP/IP. Lớp liên kết chứa các driver của thiết bị mạng, cũng cấp truy cập tới lớp vật lý là các phương tiện truyền tải như các liên kết nối tiếp ( serial link ) hay các thiết bị Ethernet.
Các lớp mạng, lớp giao vận và ứng dụng của các chức năng mạng trong HĐH Linux có chức năng tương đương như trong mô hình 4 lớp của TCP/IP.

Tuy nhiên, xét về khía cạnh phương thức hoạt động chi tiết của các ứng dụng mạng và kiến trúc mạng trong HĐH Linux, mô hình được phân cấp thành các lớp như sau:




Trong mô hình kiến trúc phân cấp như trên, tầng ứng dụng và tầng vật lý có chức năng như các mô hình quen thuộc ( OSI hay TCP/IP ) đã được đề cập ở trên, chúng ta chỉ tập trung nghiên cứu các thành phần cơ bản của hệ thống mạng trong HĐH linux (được thể hiện bẳng 5 tầng trong vùng kernel space trên hình vẽ ) Các thành phần đó được mô tả ở dạng mô hình phân lớp như sau:

1 Lớp giao diện gọi hàm hệ thống ( system call interface )

Về cơ bản, giao diện gọi hàm của hệ thống cung cấp các phương tiện để truyền tải sự điều khiển giữa các ứng dụng trong phạm vi người dùng tới nhân của Linux, nó được thực hiện thông qua các lời gọi hàm từ khi một hoạt động mạng được khởi tạo. Các lời gọi hàm này khởi tạo các socket bằng lời gọi hàm socket, kết nối tới đích qua hàm connect và kết thúc bằng lời gọi hàm sys_socketcall được định nghĩa trong file /net/socket.c

2 Lớp giao diện giao thức logic ( Protocol agnostic interface )

Lớp này còn có tên khác là lớp socket, cung cấp một bộ các chức năng thông thường để hỗ trợ các giao thức khác nhau. Lớp socket không chỉ hỗ trợ các giao thức tiêu biểu như TCP hay UDP, IP mà còn cả các giao thức như raw Ethernet hay một giao thức giao vận khác như Stream Control Transsmission Protocol ( Giao thức truyền tải điều khiển luồng ).

Socket không phải là một thiết bị thực mà nó được định nghĩa qua các hàm để thực thi các chức năng trên. ( do đó lớp này mới được gọi là agnostic interface )
Truyền thông qua các hệ thống mạng được thực hiện qua các socket. Cấu trúc socket trong Linux là struct_sock, được định nghĩa ở linux/include/net/sock.h. Cấu trúc lớn này bao gồm tất cả những trạng thái yêu cầu của mộc socket chuyên biệt nào đó, bao gồm các giao thức riêng được sử dụng bởi socket và các hoạt động có thể được thi hành trên nó.
Hệ thống mạng trong Linux biết được thông tin về các giao thức phù hợp qua một cấu trúc đặc biệt định nghĩa khả nẳng của nó. Mỗi một giao thức duy trì một cấu trúc gọi là proto ( linux/include/net/sock.h). Cấu trúc này định nghĩa hoạt động của một socket đặc biệt mà có thể được thi hành từ tầng socket tới tầng giao vận ( ví dụ phương thức để tạo ra 1 socket, phương thức để thành lập kết nối với socket, cách kết nối socket ..v..v )


3 Lớp giao thức mạng

Phần giao thức mạng định nghĩa các giao thức mạng riêng biệt sẵn sàng có thể sử dụng ( như TCP, UDP … ) Chúng được khởi tạo bởi một hàm có tên inet_init trong /net/ipv_4/af_inet.c ( TCP và UDP đều là các thành phần của bộ giao thức inet ). Hàm inet_init “đăng ký” từng giao thức một sử dụng hàm proto_register. Hàm này được định nghĩa trong linux/net/core/sock.c và ngoại trừ viecj thêm các giao thức vào một danh sách các giao thức đã được kích hoạt, nó cũng tùy chình việc phân chia các phần bộ nhớ đệm nếu cần thiết.
Quá trình các giao thức nhận dạng chính nó qua các cấu trúc proto có thể được tham khảo qua các file tcp_ipv4.c, udp.c và raw.c trong linux/net/ipv4/. Mỗi phần trong những cấu trúc giao thức này được ánh xạ bởi kiểu và giao thức vào hàm inetsw_arry, hàm này sẽ ánh xạ những giao thức đã được xây dựng sẵn ( built-in ) tới phần hoạt động của chúng. Cấu trúc của mảng inetsw_arry và mối quan hệ của nó được mô tả như hình sau:



Việc dịch chuyển dữ liệu cho các socket thi hành sử dụng một cấu trúc lõi có tên là socket buffer ( sk_buff) Một sk_buff bao gồm gói dữ liệu và cả dữ liệu trạng thái bao hàm nhiều lớp trong bộ giao thức. Mỗi một gói tin được gửi và nhận được đại diện bởi một sk_buff. Cấu trúc sk_buff được định nghĩa trong linux/include/linux/skbuff.h và được minh họa như sau:



Như đã thể hiện ở trên, nhiều sk_buff có thể được gắn lại với nhau cho một kết nối cho trước. Mỗi một sk_buff nhận dạng cấu trúc thiết bị ( net_device ) mà gói tin đang được gửi tới hoặc từ được nhận từ đó. Khi mỗi gói tin được đại diện với một sk_buff , các trường tiêu đề của gói tin được định vị qua một bộ các con trỏ ( th, iph và MAC, header ) Bởi vì sk_buff là trung tâm của việc quản lý dữ liệu socket, một số chức năng hỗ trợ đã được tạo ra để quản lý chúng. Nhiều chức năng được tạo ra để quản lý việc khởi tạo và hủy bỏ, sắp hàng …
Bộ nhớ đệm socket ( socket buffer ) được thiết kế được có thể kết nối với nhau cho một socket cho trước và bao gồm nhiều thông tin, bao gồm các liên kết tới các trường tiêu đề của giao thức, các nhãn thời gian ( chỉ thị khi nào gói tin đến và đi ) và các thiết bị kết hợp với các gói tin.

4 Lớp giao diện logic thiết bị

Có chức năng kết nối các giao thức với các loại driver thiết bị phần cứng khác nhau với các tính năng khác nhau. Lớp này cung cấp một bộ các chức năng có thể được sử dụng bởi các thiết bị mạng mức độ thấp hơn để cho phép chúng có thể hoạt động với các bộ giao thức ở mức cao hơn.
Trước hết, driver của thiết bị có thể được “đăng ký” hoặc hủy bỏ “đăng ký” đối với nhân qua lời gọi hàm register_netdevice hoặc unregister_netdevice. Lời gọi hàm trước hết phải lấp đầy cấu trúc net_device và sau đó chuyển nó tới mục đăng ký. Nhân gọi hàm init của nó, thực thi một số các thủ túc kiểm tra trạng thái, tạo một mục từ sysfs và sau đó thêm thiết bị mới vào danh sách các thiết bị sẵn sàng kích hoạt. Cấu trúc net_device được định nghĩa ở trong linux/include/linux/netdevice.h. Các chức năng khác được thực thi qua linux/net/core/dev.c.
Để có thể gửi một sk_buff từ lớp giao thức xuống tới thiết bị, Linux sử dụng hàm dev_queue_xmit. Hàm này sắp hàng một sk_buff cho đường truyền cuối cùng bởi driver của thiết bị bên dưới ( với thiết bị mạng đang được định nghĩa bởi net_device hoặc tham khảo sk_buff->dev trong sk_buff) Cấu trúc dev bao gồm một phương thức, gọi là hard_start_xmit, chứa các chức năng để khởi tạo việc truyền dữ liệu của một sk_buff.

Việc nhận một gói tin được được qui ước thực hiện với netif_rx. Khi một dirver của thiết bị cấp thấp hơn nhận được một gói tin, sk_buff sẽ được gửi tới lớp mạng nhờ gọi hàm netif_rx. Hàm này sau đó sẽ sắp hàng sk_buff tới hàng của giao thức lớp cấp cao hơn cho việc xử lý sau này qua hàm netif_rx_shedule. Hai hàm này được định nghĩa ở trong linux/net/core/dev.c.

5 Lớp driver cho thiết bị

Lớp thấp nhất của mô hình cấu trúc mạng trong Linux có chức năng quản lý các thiết bị mạng vật lý.
Tại thời điểm khởi tạo, một driver thiết bị được phân một cấu trúc net_device và sau đó khởi tạo nó với thủ tục cần thiết. Một trong những thủ tục này là dev->hard_start_xmit , định nghĩa cách thức một lớp trên sắp hàng một sk_buff để truyền đi. Hoạt động của hàm này phục thuộc vào các thiết bị phần cứng lớp dưới, nhưng thông thường các gói tin được mô tả bởi sk_buff được di chuyển tới các vòng hoặc các hàng của thiết bị phần cứng. Khung nhận, như được mô tả ở lớp trên, sử dụng các giao diện netif_rx hoặc netif_receive_skb cho một driver mạng NAPI. NAPI driver này điều khiển các chức năng hoạt động của thiết bị phần cứng lớp dưới.

Bài viết cùng chủ đề:

Ch? ký c?a hieuapt

http://antispam.vinacis.com/ - Phần mềm chống SPAM miễn phí tốt nhất hiện nay. Hỗ trợ trên MS Outlook, Outlook Express, Windows Mail, MS Exchange Server, SMTP Server,Thunderbird.
hieuapt vẫn chưa có mặt trong diễn đàn  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Trả Lời Với Trích Dẫn
Trả lời

Bookmarks

Tags
linux networking


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh Kiếm Trong Bài
Kiếm Trong Bài:

Kiếm Chi Tiết
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở

Chuyển đến



Múi giờ GMT. Hiện tại là 05:44 AM.
Powered by: vBulletin - Copyright © 2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.AdminTalk.vn
Powered by vBCMS® 1.2.5 ©2002 - 2012 VinaCIS® Corporation