Professional Documents
Culture Documents
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------
BÁO CÁO
THỰC TẬP TỐT NGHIỆP
LỜI CẢM ƠN
Sau thời gian thực tập và tìm hiểu đầy đủ các kiến thức tại nhà trường, đây là
lần đầu tiên em được nhà trường sắp xếp cho đi thực tập thực tế bên ngoài. Đây là thời
gian mà em được thực tập thực tế, trau dồi lại những kiến thức mà mình đã đuợc học,
chuẩn bị những kĩ năng cơ bản trước khi ra trường. Trong đợt thực tập này em đã được
học tập rất nhiều những công việc thực tế bên ngoài. So với quá trình học tập thì thực
tế bên ngoài có khá nhiều điều khác biệt, khi thực tập thì cũng có nhiều điều chưa làm
tốt, xong em cũng đã có được nhều kinh nghiệm quí báu về chuyên môn cũng như các
kĩ năng khác.
Trong thời gian thực tập, được sự phân công của chị Nguyễn Tường Uyên,
project manager của công ty TNHH giải pháp phần mềm Tường Minh(TMA Solutions
lab 3), em đã được thực tập với vị trí C/C++ developmer. Qua đây, em xin gửi cảm ơn
đến thầy Bùi Quốc Bảo đã tạo điều kiện cho em được thực tập bên ngoài để cọ xát thực
tế. Em cũng xin chân thành cảm ơn đến ban lãnh đạo công ty TMA Solutions đã tạo
điều kiện cho em trong quá trình thực tập tại công ty.
Trong quá trình thực tập tại doanh nghiệp, được sự giúp đỡ của anh Nguyễn
Khánh Vĩnh-Cán bộ hướng dẫn thực tập tại đơn vị, cùng với các anh chị trong công ty
TMA Solutions, em đã hoàn thành bài báo cáo thực tập của mình. Tuy nhiên với kiến
thức còn hạn chế và thời gian tìm hiểu công nghệ và ngôn ngữ mới chưa nhiều nên bài
báo cáo không thể tránh khỏi sai sót. Vì vậy, em rất mong nhận được sự góp ý của Quý
Thầy Cô để em khắc phục được những nhược điểm và ngày càng hoàn thiện hơn.
Em xin chân thành cảm ơn thầy Bùi Quốc Bảo và các anh chị trong công ty đã
giúp đỡ em trong thời gian qua. Chúc thầy và các anh chị luôn mạnh khỏe và thành đạt,
chúc công ty luôn phát triển, thành công rực rỡ trong tương lai.
i
Lời cảm ơn GVHD: ThS. Bùi Quốc Bảo
ii
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
MỤC LỤC
1.1.1 Quá trình hình thành và phát triển của công ty TMA Solutions ....................................... 1
2.1 Tìm hiểu về hệ điều hành Linux và ôn tập các kiến thức về C/C++ ........................................6
2.2 Tạo chatroom bằng socket và multithreading .................... Error! Bookmark not defined.10
3.2 Kinh nghiệm học được sau khi thực tập .................................................................................21
iii
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
iv
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
Hình 1.1 Sơ đồ tổ chức công ty TMA Solutions .................................. Error! Bookmark not defined.3
Hình 2.5 Server sau khi các client kết nối .............................................................................................11
Hình 2.9 Kiến trúc phần mềm cho tính năng Foobar .............................................................................15
v
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
vi
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
I. GIỚI THIỆU
1.1.1. Quá trình hình thành và phát triển của công ty TMA Solutions
TMA được thành lập năm 1997 và nhanh chóng trở thành công ty phần mềm
hàng đầu Việt Nam với tốc độ tăng trưởng trung bình hàng năm là hơn 50%.
Mục tiêu của TMA là trở thành tập đoàn công nghệ hàng đầu và góp phần đưa
tên Việt Nam vào bản đồ gia công phần mềm thế giới.
TMA Solutions là công ty chuyên cung cấp các:
• Dịch vụ giải pháp phần mềm.
• Dịch vụ kỹ thuật: triển khai và kiểm tra mạng viễn thông, thiết kế và xây
dựng hệ thống mạng, giải pháp bảo mật.
• Đào tạo chuyên ngành cho kỹ sư CNTT và điện tử-viễn thông.
• Viễn thông và mạng: PBX, call center software, soft switch, IMS, SIP,
VoIP, Asterisk, broadband/security router, firewall, network
management software, NGN.
• Phần mềm nhúng và di động: VxWorks, RT-Linux, Symbian, Windows
Mobile, J2ME, iPhone, SMS, WML.
• Phần mềm ứng dụng cho doanh nghiệp: dựa trên công nghệ Microsoft
và mã nguồn mở.
• Phát triển dịch vụ phần mềm các ngôn ngữ chủ yếu: .NET, Java, C/C++,
php, Python, Ruby, iOS, Android,…
• Gia công phần mềm cho các công ty hàng đầu thế giới về các lĩnh vực:
network, tài chính, e-commerce,…
• Hơn 2000 kỹ sư
• 90% có bằng đại học, 10% có bằng thạc sĩ hoặc tiến sĩ.
• Hơn 1/3 kỹ sư có ít nhất 5 năm kinh nghiệm làm việc
• 40% kỹ sư có kinh nghiệm học tập và làm việc ở nước ngoài.
• Tiếng Anh là ngôn ngữ chính giao tiếp trong công việc. Những ngon
ngữ khác: tiếng Nhật, tiếng Pháp, tiếng Hoa.
• ISO 9001:2000
• TL 9000
• CMMi-Level 3
• Công ty phần mềm có quy mô lớn tại Tp.Hồ Chí Minh và Việt Nam với
trên 2000 kỹ sư.
• 6 năm liền đạt huy chương vàng xuất khẩu phần mềm
• Công ty phần mềm viễn thông hàng đầu Đông Nam Á
• Được các công ty hàng đầu thế giới tin tưởng và hợp tác lâu dài.
• Được nhiều đài truyền hình và báo chí quốc tế giới thiệu: CNN(Mỹ),
NHK(Nhật), Global (Brazil), Nation (Thái Lan) để minh chứng cho sự
phát triển của ngành phần mềm của Việt Nam.
2
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
- Delivery Centers: Trung tâm chuyển giao sản phẩm cho khách hàng.
- TMA Mobile Solutions (TMS): Phát triển ứng dụng di động, thử nghiệm
cũng như tạo ra các dịch vụ điện thoại di động, giá trị gia tăng và các ứng
dụng cho các nhà khai thác di động, cung cấp nội dung và doanh nghiệp.
- TMA Training Center (TTC): Trung tâm đào tạo nhân lực.
- Student Development Center (SDC): Có nhiệm vụ liên kết với sinh viên,
nhận sinh viên thực tập tại công ty nhằm thu hút và bồi dưỡng nhân tài.
3
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
- Business Development: Tăng cường quan hệ với khách hàng hiện tại cũng
như tạo thêm các mối quan hệ với các khách hàng khác.
Nội dung 1: Tìm hiểu hệ điều hành Linux và ôn tập các kiến thức về C/C++.
Nội dung 3: Tìm hiểu và nghiên cứu về OmniSwitch AOS Release 8 CLI.
4
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
5
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
2.1 Tìm hiểu hệ điều hành Linux và ôn tập các kiến thức về C/C++
Linux là một hệ điều hành máy tính được phát triển từ năm 1991 dựa trên
hệ điều hành Unix và bằng viết bằng ngôn ngữ C.
Do Linux được phát hành miễn phí và có nhiều ưu điểm vượt trội nên Linux
vẫn giữ được một chỗ đứng vững chắc trong lòng người dùng trước các hệ điều
hành lớn như Windows hay MacOS.
Có các loại Shell như sau: sh (the Bourne Shell), bash (Bourne-again shell),
csh (C shell), ash (Almquist shell), tsh (TENEX C shell), zsh (Z shell).
+ Application: Đây là phần quen thuộc với chúng ta nhất, phần để người
dùng cài đặt ứng dụng, chạy ứng dụng để người dùng có thể phục vụ cho
nhu cầu của mình.
- Công dụng của hệ điều hành Linux
Tương tự như các hệ điều hành khác, Linux cũng cấp môi trường trung gian
để người dùng có thể giao tiếp với phần cứng máy tính, thực hiện các công việc
của mình. Bên cạnh đó, nhờ ứng dụng mã nguồn mở mà Linux đem lại nhiều
sự thoải mái hơn cho người dùng, đặc biệt các lập trình viên, nhà phát triển.
- Ưu và nhược điểm của hệ điều hành Linux
+ Ưu điểm
• Miễn phí và được hỗ trợ các ứng dụng văn phòng OpenOffice và
LibreOffice.
6
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
7
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
một giao diện lập trình thread chung, tiêu chuẩn POSIX Thread (pthread) cung
cấp các giao diện lập trình thread trên ngôn ngữ C/C++ đã ra đời.
- Pthread data type
Kiểu dữ liệu Mô tả
pthread_t Số định danh của thread (threadID)
pthread_mutex_t Mutex
pthread_mutexattr_ Thuộc tính của Mutex
pthread_cond_t Biến điều kiện
pthread_condattr_t Thuộc tính của biến điều kiện
pthread_key_t Khóa cho dữ liệu của thread
pthread_attr_t Thuộc tính của thread
Bảng 2.1 Kiểu dữ liệu POSIX Thread
Kỹ thuật mutual exclusion (gọi tắt là mutex) dùng để bảo vệ tài nguyên chia
sẻ (shared variable) mà chủ yếu là biến chia sẻ (shared variable) giữa các thread.
Có thể hình dung cách hoạt động của mutex giống như là một cái khóa: Mỗi
vùng critical section sẽ được bảo vệ trong phòng và có một cái khóa ở cửa,
một thread trước khi chạy vào critical section sẽ khóa lại rồi vào làm những gì
mình muốn làm; sau khi xong việc nó sẽ mở khóa để cho các thread khác truy
cập. Các thread khác nếu thấy cửa đang khóa thì phải chờ (đi vào trạng thái
blocked) cho đến khi thread trước mở khóa; sau đó nó tiếp tục khóa lại rồi chạy
vào critical section và mở khóa ra sau khi xong việc. Cần lưu rằng chỉ có thread
nào khóa mutex thì mới mở được mutex đó. Như vậy, việc thực hiện đồng bộ
thread để bảo vệ tài nguyên chia sẻ gồm 3 bước rõ ràng như sau:
• Khóa mutex trước khi vào critical section
• Thực thi code trong critical section
• Nhả khóa mutex sau khi kết thúc critical section
Lock và Unlock là một cơ chế rất đơn giản và hiệu quả để bảo vệ biến toàn
cục được sử dụng không chỉ trong lập trình multi-thread mà còn rất nhiều tình
huống khai thác chung tài nguyên chia sẻ như đa tiến trình, hoặc đọc/ghi vào cơ
sở dữ liệu... Khi một thread gọi hàm yêu cầu khóa để vào critical section mà có
một thread khác đang khóa, nó sẽ chờ cho đến khi thread kia mở khóa rồi chiếm
8
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
quyền. Trạng thái một thread khóa một mutex mà rơi vào trạng thái chờ không
thể giải thoát được gọi là deadlock.
b. Lập trình socket, giao tiếp client và server bằng ngôn ngữ C
Socket là một giao diện lập trình (API – Application Program Interface) ứng
dụng mạng thông qua giao diện này có thể lập trình điều khiển việc truyền thông
giữa 2 máy sử dụng các giao thức mức thấp như TCP, UDP… , Có thể tưởng
tượng nó như một thiết bị truyền thông 2 chiều tương tự như tệp tin, chúng ta
gửi/nhận dữ liệu giữa 2 máy, tương tự như việc đọc ghi trên tệp tin.
9
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
10
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
11
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
12
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
- Cho khả năng mở rộng từ 24 đến 384 cổng Fast Ethernet và gigabit với 16
cổng 10 GigE.
- Hỗ trợ IEEE 802.3af cũng như PoE tương thích IEEE 802.3at.
13
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
- Hỗ trợ Giao thức thời gian chính xác (PTP) thông qua IEEE 1588v2.
14
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
- Các tính năng lớp 2 + nâng cao với định tuyến lớp 3 cơ bản cho cả IPv4 và
IPv6.
- Giao diện người dùng và giao diện sợi quang (SFP) tốc độ gấp ba
(10/100/1000) hỗ trợ bộ thu phát quang 100Base-X hoặc 1000Base-X.
- Tính khả dụng cao với khái niệm khung ảo, liên kết xếp chồng dự phòng,
chuyển đổi dự phòng đơn vị chính / phụ, các tùy chọn nguồn có thể thay thế
nóng và khôi phục cấu hình.
Hình 2.9 Kiến trúc phần mềm cho tính năng Foobar
CS Chassis Supervision
15
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
WebView Webview
SNMP SNMP
a. Port-Mirroring
Mirroring Sao chép tất cả lưu lượng đi qua một cổng switch sang một cổng
khác.
Monitoring Sao chép tất cả lưu lượng đi qua một cổng switch sang CPU của
thiết bị.
Mirrored Còn gọi là cổng nguồn, là cổng được chọn trong hệ thống, tất cả
Port lưu lượng đầu vào và đầu ra của nó được sao chép vào một vị trí
khác (cổng khác hoặc được lưu vào bộ nhớ).
Mirroring Còn gọi là cổng đích được chọn để gửi tất cả các gói dữ liệu được
Port nhân bản ra ngoài.
Local MTP Cổng được cấu hình làm cổng phản chiếu trên switch nguồn, khi
sử dụng RPMIR
Remote Cổng đích dữ kiến, nơi dữ liệu được sao chép dự định được gửi
MTP đi, khi sử dụng RPMIR
16
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
- Port-Mirroring: sao chép tất cả lưu lượng đến và đi từ các cổng nhân bản
sang cổng phản chiếu, cổng nguồn đến cổng đích. Cổng Ethernet, nơi nó có
thể giám sát bằng đầu dò hoặc giám sát mạng từ xa (RMON) mà không làm
gián đoạn lưu lượng trên cổng được nhân bản.
- Port-Mirroring: được cung cấp như một công cụ có thể sử dụng trong các
trường hợp gặp sự cố. Mục tiêu chính của port-mirroring là phản chiếu lưu
lượng (vào hoặc ra) trên một cổng tới một cổng hoặc liên kết khác, nơi nó
có thể gắn một đầu dò RMON hoặc bộ Ethernet Analyzer để nắm bắt lưu
lượng.
• “mirrored port” là cổng mà lưu lượng truy cập phải được ghi lại
(cổng A trong hình trên) và “mirroring destination” là tổng hợp
cổng/liên kết nơi lưu lượng truy cập sẽ được sao chép vào (cổng D
trong hình trên). Trong trường hợp sao chép hai hướng, phần mềm
port-mirroring đảm bảo rằng lưu lượng vào trên cổng A được sao
chép lên cổng D và lưu lượng đi qua A cũng được sao chép lên cổng
D. Cũng có thể sao chép lưu lượng vào hoặc ra trên cổng A đến cổng
phản chiếu D. Không có hạn chế về loại và tốc độ của các điểm được
nhân bản hoặc đích phản chiếu. Nếu cổng được nhân bản có tốc độ
cao hơn so với đích phản chiếu, thì lưu lượng truy cập sẽ bị mất dữ
liệu. Vì vậy đích phản chiếu phải có tốc độ bằng hoặc lớn hơn so với
cổng được nhân bản để tránh mất dữ liệu.
• Các gói tin nhân bản sẽ được gửi đến một đích có thể lập trình được
gọi là mirror-to-port (MTP). Điều này không ảnh hưởng đến hoạt
động của switch, gói tin cũng được gửi đến đích ban đầu. Nhiều cổng
cũng có thể được sao chép đồng thời với MTP.
17
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
switch trong mạng. Lưu lượng được phản chiếu có thể đi vào, đi ra hoặc hai
chiều. Lưu lượng sao chép từ các cổng nguồn được gắn thẻ RPMIR VLAN
thông qua MTP trong switch nguồn và sau đó chuyển tiếp qua các switch
trung gian đến switch đích.
Theo hình trên, switch nguồn (A) được cấu hình trên cổng MTP cục bộ. Tất
cả các gói tin gửi trên cổng MTP đều được gắn thẻ RPMIR_VLAN. Switch
trung gian (B) và switch đích (C) phải có cấu hình VLAN phù hợp với giá trị
RPMIR_VLAN.
b. Port-Monitoring
- Port-monitoring: cho phép kiểm tra các gói đến và đi từ một cổng Ethernet
cụ thể. Port-monitoring có các tính năng:
• Các lệnh có thể bật và hiển thị dữ liệu được chụp trên một cổng.
• Một tệp có tên pmonitor.enc được tạo trong bộ nhớ flash khi ta cấu
hình và bật phiên giám sát cổng.
• Chỉ một phiên duy nhất có thể cấu hình thành port-monitoring và có
thể giám sát nhiều cổng cùng một lúc.
• Chỉ 64byte đầu tiên của lưu lượng được ghi lại ở chế độ “brief”. Nếu
capture-type được đặt thành “full” thì toàn bộ gói tin sẽ được chụp.
• Nếu cả tính năng phản chiếu và giám sát đều được bật, thì các gói
tin sẽ được nhân bản hay giám sát (tức là được gửi đến CPU), tùy
theo điều kiện cái nào đến trước.
18
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
CPU
Monitored
Traffic
qDispatcher
Switching ASIC
Port Monitoring
Memory Buffer
FTPed by NI Port NI
Monitoring into
CMM
CMM
Flash
- Đáp ứng tất cả các nhu cầu cấu hình của khách hàng và cung cấp khả năng
bảo vệ tuyệt vời cùng tính linh hoạt trong việc triển khai, vận hành giúp cho
quá trình bảo trì dễ dàng hơn.
- Cung cấp hiệu suất vượt trội để hỗ trợ các ứng dụng thoại, dữ liệu và video
với thời gian thực cho các mạng có khả năng mở rộng hội tụ.
- Đảm bảo quản lý điện năng hiệu quả, giảm chi phí vận hành (OPEX) và
giảm tổng chi phí sở hữu (TCO) thông qua mức tiêu thụ điện năng thấp và
19
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
phân bổ PoE động đồng thời cung cấp năng lượng cần thiết cho thiết bị kèm
theo.
- Bảo mật hoàn toàn mạng mà không mất thêm bất cứ chi phí nào.
- Giúp giảm chi phí trên toàn doanh nghiệp thông qua hợp nhất phần cứng để
đạt được phân đoạn mạng và bảo mật mà không cần thiết phải cài đặt thêm
phần cứng.
- Thiết bị này còn hỗ trợ cài đặt và triển khai hiệu quả về chi phí bằng cách
thiết lập và cấu hình chuyển mạch tự động và cung cấp mạng LAN ảo
(VLAN) đầu cuối.
- Thiết bị này còn có khả năng đơn giản hóa mạng Ethernet metro OA&M
cho các nhà cung cấp dịch vụ
20
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
Về bản thân
- Ưu điểm
• Củng cố thêm kiến thức về C/C++, Network,…
• Học được thêm những công cụ mới: MobaXterm, Wireshark,….
• Củng cố khả năng giao tiếp trong công sở.
• Được đào tạo về các quy trình, khả năng làm việc nhóm.
• Củng cố và rèn luyện thêm kỹ năng nghe, nói, đọc viết bằng tiếng Anh.
• Khả năng tự học, nghiên cứu qua tài liệu nâng cao.
- Nhược điểm
• Khả năng tìm lỗi và sửa lỗi còn nhiều khó khan dẫn đến mất thời gian.
• Khả năng đọc tài liệu bằng tiếng Anh còn chưa cao.
Qua thời gian thực tập thực tế tại Công ty TNHH Giải pháp Phần mềm
Tường Minh, em đã học hỏi và trao dồi thêm nhiều kỹ năng, kiến thức thực tế;
đồng thời được củng cố kiến thức đã học trên ghế nhà trường. Qua trải nghiệm
thực tế, em đã thực hiện được một số yêu cầu nhất định; tuy nhiên, thời gian
thực tập chưa được nhiều nên em vẫn còn gặp phải nhiều khó khăn cần khắc
phục.
3.3 Đề xuất các giải pháp cải thiện chất lượng giảng dạy ở nhà trường
Môi trường thực tếtại công ty là môi trường hoàn toàn khác so với môi
trường giáo dục tại nhà trường, do đó, sinh viên khi thực tập sẽ bỡ ngỡ và sẽ
gặp một số khó khăn nhất định trong thực tập. Em xin được đề xuất một số giải
pháp để cải thiện chất lượng giảng dạy ở nhà trường như sau:
- Về kỹ năng mềm:
• Thường xuyên tổ chức các lớp rèn luyện kỹ năng làm việc nhóm.
• Trang bị cho sinh viên kỹ năng tìm đọc tài liệu bằng Tiếng Anh.
• Tổ chức các buổi sinh hoạt Tiếng Anh.
- Về kiến thức chuyên ngành:
• Chú trọng hơn về hướng đối tượng trong việc giảng dạy.
21
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
22
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
[1] Mark Mitchell, Jeffrey Oldham, and Alex Samuel, “Advanced Linux
Programming”, www.newriders.com
[4] Neil Matthew and Richard Stones, “Beginning Linux Programming 4th Edition”,
www.wiley.com/en-sg
23
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
V. PHỤ LỤC
24
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
25
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
-> no port-mirroring 20
----------+-----------+--------------+----------+---------+----------+---------
26
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
27
Thực tập tốt nghiệp GVHD: ThS. Bùi Quốc Bảo
28