ĐẠI HỌC CÔNG NGHỆ
THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
----------
BÁO CÁO ĐỜ ÁN 4
ĐỀ TÀI:
TÌM HIỂU VÀ XÂY DỰNG
CHƯƠNG TRÌNH HTTP SERVER
Sinh viên thực hiện :
Lớp
GVHD
:
:
Ngô Mỹ Hanh
Nguyễn Thị Nguyệt Minh
18IT1 + 18IT2
Th.S Nguyễn Văn Bình
Đà Nẵng, tháng 11 năm 2020
ĐẠI HỌC CÔNG NGHỆ
THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
----------
BÁO CÁO ĐỜ ÁN 4
ĐỀ TÀI:
TÌM HIỂU VÀ XÂY DỰNG
CHƯƠNG TRÌNH HTTP SERVER
Sinh viên thực hiện :
Lớp
GVHD
:
:
Ngô Mỹ Hanh
Nguyễn Thị Nguyệt Minh
18IT1 + 18IT2
Th.S Nguyễn Văn Bình
Đà Nẵng, tháng 11 năm 2020
MỤC LỤC
LỜI CẢM ƠN..................................................................................................................7
LỜI NÓI ĐẦU................................................................................................................8
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT................................................................................9
1.1. Tổng quan về lập trình mạng.....................................................................................9
1.1.1. Khái niệm............................................................................................................... 9
1.1.2. Ngôn ngữ lập trinh mạng.......................................................................................9
1.1.3. Thư viện hỗ trơ.......................................................................................................9
1.1.4. Mô hình phân tầng...............................................................................................10
1.1.5. Giao thức mạng....................................................................................................15
1.2. Tìm hiểu về web server...........................................................................................16
1.2.1. Web server là gì?..................................................................................................16
1.2.2. Những phần chính quan trọng của web server.....................................................16
1.2.3. Chức năng của web server...................................................................................17
1.2.4. Web server hoạt động như thế nào?......................................................................17
1.2.5. Những lưu ý khi sử dụng web server...................................................................18
1.3. Giới thiệu về giao thức HTTP.................................................................................19
1.3.1. HTTP là gì............................................................................................................19
1.3.2. Các đặt trưng cơ bản của HTTP...........................................................................19
1.3.3. Cấu trúc cơ bản....................................................................................................19
1.3.4. Ưu nhươc điểm của giao thức HTTP...................................................................20
1.4. Tổng quan về ngôn ngữ Java...................................................................................20
1.4.1. Ngôn ngữ Java là gì?............................................................................................20
1.4.2. Đặc điểm ngôn ngữ Java......................................................................................21
1.4.3. Tại sao nên sử dụng Java?....................................................................................21
1.4.4. Java đươc ứng dụng ở đâu?..................................................................................22
CHƯƠNG 2. PHÂN TÍCH HỆ THỐNG.....................................................................23
2.1 HTTP là một Application Protocol dạng stateless....................................................23
2.2. Các phương thức giao tiếp HTTP...........................................................................23
2.2.1. GET.....................................................................................................................24
2.2.2. POST.................................................................................................................... 24
2.2.3. PUT...................................................................................................................... 24
2.2.4. DELETE..............................................................................................................25
2.2.5. HEAD..................................................................................................................25
2.2.6. CONNECT...........................................................................................................25
2.2.7. OPTIONS.............................................................................................................26
2.2.8. TRACE................................................................................................................26
2.3. Các trường header trong HTTP...............................................................................26
2.3.1. General Header....................................................................................................27
2.3.2. Request-Header (Các trường Header yêu cầu trên Client)...................................30
2.3.3. Response-Header (Các trường Phản hồi từ Server)..............................................34
2.3.4.Entity Headers.......................................................................................................36
2.4. HTTP status codes...................................................................................................37
2.4.1. HTTP status codes là gì?......................................................................................37
2.4.2. Các loại HTTP status code...................................................................................38
CHƯƠNG 3. DEMO CHƯƠNG TRÌNH.....................................................................41
3.1 Chạy demo chương trình:.........................................................................................41
CHƯƠNG IV. ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN ĐỀ
TÀI................................................................................................................................ 44
4.1. Đánh giá kết quả đạt đươc:......................................................................................44
4.2. Hướng phát triển đề tài:..........................................................................................45
KẾT LUẬN................................................................................................................... 46
TÀI LIỆU THAM KHẢO..............................................................................................47
MỤC LỤC BẢNG
Bảng 1. 1: Bảng mô tả ngắn gọn về hành động của các phương thức HTTP................24
Bảng 1. 2: Bảng chỉ dẫn yêu cầu bộ nhớ ẩn được sử dụng bởi Client...........................27
Bảng 1. 3: Bảng chỉ dẫn phản hồi bộ nhớ ẩn được sử dụng bởi Server trong phản hồi 28
Bảng 1. 4: Bảng miêu tả các tính năng của trường Set-Cookie.....................................35
MỤC LỤC HÌNH ẢNH
Hình 1. 1: Mơ hình OSI.................................................................................................10
Hình 1. 2: Mơ hình TCP/IP...........................................................................................13
Hình 1. 3. Những phần chính quan trọng của web server.............................................17
Hình 1. 4. Hoạt động của web server............................................................................17
Hình 1. 5. Cấu trúc cơ bản của HTTP...........................................................................20
Hình 3. 1 Giao diện đang mở cởn..................................................................................41
Hình 3. 2 Giao diện tắt server.......................................................................................41
Hình 3. 3 Giao diện thay đởi port..................................................................................42
Hình 3. 4 Giao diện thơng bao quản lý client................................................................42
Hình 3. 5Giao diện chạy HTTP.....................................................................................43
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
…………………………………………………………
Chữ ký của giảng viên hướng dẫn
………………………………
LỜI CẢM ƠN
Trên thực tế khơng có sự thành cơng nào mà không gắn liền với những sự hỗ trơ,
giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt quãng
thời gian từ khi bắt đầu học tập tại giảng đường trường Đại học công nghệ thông tin và
truyền thông Việt Hàn - Đại học Đà Nẵng, chúng tôi đã nhận đươc rất nhiều sự quan
tâm, giúp đỡ của thầy cô và các bạn.
Với lịng biết ơn sâu sắc nhất, nhóm chúng tơi xin gửi lời cảm ơn chân thành tới
toàn thể các thầy cô giáo trong khoa Công nghệ thông tin và truyền thông Đại học Việt
Hàn, những người đã dạy dỗ và truyền đạt vốn kiến thức vô cùng quý báu của mình cho
chúng tôi trong suốt quãng thời gian học tại đây. Những tình cảm và kiến thức mà thầy
cô đã gửi trao cho chúng tôi sẽ là hành trang cho chúng tơi để bước đi trên những đoạn
đường tương lai.
Nhóm chúng tôi cũng xin gửi lời cảm ơn sâu sắc tới Thầy Nguyễn Văn Bình,
người đã tận tình hỗ trơ và dẫn dắt nhóm chúng tơi trong suốt quá trình thực hiện đồ án
để có đươc kết quả một cách tốt nhất.
Một lần nữa nhóm chúng tơi xin được chân thành cảm ơn!
LỜI NĨI ĐẦU
Ngành cơng nghệ thơng tin là một ngành khoa học đang trên đà phát triển mạnh và
ứng dụng rộng rãi trên nhiều lĩnh vực. Cùng với xu hướng phát triển của các phương
tiện truyền thông như báo, radio… thì việc sử dụng internet ngày càng phổ biến. Truy
cập internet chúng ta có đươc một kho thơng tin khởng lồ phục vụ mọi nhu cầu, mục
đích của chúng ta chỉ bằng một cái nhấp chuột.
Nhận thức đươc nhu cầu tìm hiểu thơng tin, giải trí của xã hội, là sự ra đời của hàng
loạt website cho các mục đích thương mại, giải trí tin tức… Để đáp ứng với việc cập
nhật thông tin hàng ngày, tình hình xã hội, chính trị, thời sự, sức khỏe… thì website là
một thứ tất yếu.
Do đó nhóm chúng tơi đã vận dụng những hiểu biết của nhóm mình về Apache,
PHP, MySQL, để xây dựng một web server website.
Sau thời gian học tập tại trường, đươc sự chỉ bảo hướng dẫn nhiệt tình của thầy cô
giáo trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn, chúng tôi đã kết
thúc khoá học và đã tích luỹ đươc vốn kiến thức nhất định. Đươc sự đồng ý của nhà
trường và thầy Phan Trọng Thanh chúng tôi đươc giao đề tài : “Tìm hiểu và xây dựng
một chương trình HTTP Server”.
Đồ án môn học của chúng tôi gồm 4 chương:
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích hệ thống
Chương 3: Demo chương trình
Chương 4: Đánh giá kết quả đạt đươc và hướng phát triển
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về lập trình mạng
1.1.1. Khái niệm
Lập trình mạng là các kỹ thuật lập trình nhằm xây dựng những ứng dụng, phần
mềm khai thác hiệu quả tài nguyên mạng máy tính. Mạng máy tính đang ngày một phát
triển, ứng dụng của mạng đem lại là khơng thể phủ nhận.
Ngày này khi nói đến phát triển các ứng dụng phần mềm, đa số là người ta muốn
nói đến chương trình có khả năng làm việc trong mơi trường mạng tích hơp nói chung
và mạng máy tính nói riêng. Từ các chương trình kế toán doanh nghiệp, quản lý, trò
chơi, điều khiển... đều là các chương trình ứng dụng mạng.
Vấn đề lập trình mạng liên quan đế nhiều lĩnh vực kiến thức khác nhau. Từ kiến
thức sử dụng ngơn ngữ lập trình, phân tích thiết kế hệ thống, kiến thức hệ thống mạng,
mô hình xây dựng chương trình ứng dụng mạng, kiến thức về cơ sở dữ liệu... cho đến
kiến thức truyền thông, các kiến thức các lĩnh vực liên quan khác như mạng điện thoại
di động, PSTN, hệ thống GPS, các mạng như BlueTooth, WUSB, mạng sensor....
Nhưng có thể nói vấn đề lập trình mạng có 3 vấn đề chính cốt lõi tích hơp trong lập
trình ứng dụng mạng và đươc thể hiện như hình.
Hay nói cách khác, vấn đề lập trình mạng có thể đươc định nghĩa với công thức
sau: LTM = KTM + MH + NN.
LTM: Lập trình mạng.
KTM: Kiến thức mạng trùn thơng (mạng máy tính, PSTN,...).
MH: Mơ hình lập trình mạng.
NN: Ngôn ngữ lập trình mạng.
1.1.2. Ngôn ngữ lập trinh mạng
Hầu hết các ngơn ngữ lập trình mạng đều có thể sử dụng để lập trình mạng, tuy
nhiên việc lập trình mạng còn phù thuộc vào các thư viện và mơi trường lập trình có hỗ
trơ hay khơng. Có thể liệt kê các ngơn ngữ lập trình có thể sử dụng để lập trình mạng
như sau:
C/C++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loại ứng dụng
trong đó có ứng dụng mạng.
Java: Ngơn ngữ lập trình khá thông dụng và hổ trơ nhiều môi trường, tỏng đó có
thể viết ứng dụng chạy trên điện thoại di động.
C#: Ngôn ngữ lập trình rất mạnh và dễ sử dụng, chỉ hổ trơ trên họ hệ điều hành
Windows của Microsoft.
Python, Perl, Php…: Các ngôn ngữ thông dịch, dử dụng để viết nhanh các tiện
ích nhỏ một cách nhanh chống, trong đó có thể sử dụng để viết ứng dụng mạng.
1.1.3. Thư viện hỗ trơ
Việc lập trình mạng phụ thuộc rất nhiều vào các thư viện hỗ trơ đến từ hệ thống.
Tùy thuộc vào nền tảng phát triển ứng dụng mà có thể sử dụng các thư viện khác nhau.
Có thể liệt kê một với thư viện hỗ trơ lập trình mạng như sau:
- Winsock: Thư viện liên kết động của Microsoft, đươc phân phối cùng hệ điều
hành Windows. Winsock cung cấp khá nhiều API để phát triển ứng dụng mạng.
Winsock có thể sử dụng cùng bất kỳ ngơn ngữ lập trình nào, nhưng bộ đôi C/C++ và
Winsock đem lại hiệu năng cao nhất, nhưng tương đối khó sử dụng.
- Thư viện System.Net trong .NET framework: Thư viện cung cấp rất nhiều API
dễ sử dụng để xây dựng ứng dụng mạng. Để sử dụng thư viện này, người ta thường
dùng C#. Việc phát triển ứng dụng mạng nhờ thư viện này khá dễ dàng.
- Thư viện MFC Socket: Thư viện đi cùng bộ phát triển Visual Studio C++. Đây
là thư viện cũng không dễ sử dụng.
- Các thư viện trong Java Runtime, PHP,….
1.1.4. Mơ hình phân tầng
a. Mơ hình OSI:
Hình 1. 1: Mơ hình OSI
Mơ hình OSi có 7 lớp và đươc thiết kế theo các nguyên tắc sau:
- Một lớp đươc tạo ra tương đương với một khái niệm trừu tương.
- Một lớp thực hiện một chức năng hoàn chỉnh nào đó.
- Chức năng của mỗi lớp phải đươc chọn theo xu hướng phù hơp với các giao
thức đã đươc chuẩn hóa.
- Biên của các lớp phải đươc thiết kế sao cho tối thiểu hóa đươc lương thơng
tin trùn qua các giao diện.
Vai trò và chức năng của 7 tầng OSI:
Trong mô hình OSI, khả năng kiểm soát sẽ đươc luân chuyển từ tầng này tới tầng
khác, quá trình bắt đầu từ tầng 7, sau đó dần dần đươc chuyển đến tầng dưới cùng thông
qua các kênh tới các station rồi sau đó sao lưu hierarchy.
Mơ hình OSI 7 tầng tiếp nhận nhiệm vụ liên mạng, tiến hành chia thành các tầng
tương ứng đươc xếp chồng lên nhau.
Chủ yếu các chức năng của nó đươc tồn tại ở tất cả các hệ thống giao tiếp, ngồi
tên mơ hình 7 tầng, 7 lớp thì nó cịn hay đươc gọi là Mô hình Tham chiếu OSI hoặc chỉ
là Mô hình OSI. Mô hình gồm 7 tầng OSI là một hệ thống mở, nó có khả năng kết nối
thơng tin với các hệ thống khác nhau, tương thích với các chuẩn OSI.
Tầng 1-4: là các tầng thực hiện chức năng di chuyển dữ liệu, đây là các tầng cấp
thấp.
Tầng 5-7: tầng cấp cao chứa các dữ liệu ứng dụng. Cách thức vận hành của hệ
thống network nằm trong một quy tắc chung đó là chuyển dữ liệu đi. Mỗi tầng sẽ thực
hiện các chức năng chuyên biệt riêng sau đó mới chuyển các dữ liệu đi tới các tầng tiếp
theo.
Application Layer – Tầng Ứng dụng:
Chức năng tầng Ứng dụng: là lớp trên cùng, xác định giao diện giữa các đối tác,
người sử dụng, chất lương dịch vụ, đồng thời xác định cả quyền riêng tư hay có bất kì
một ràng buộc nào về cú pháp dữ liệu hay không. Tầng Application chỉ cung cấp một
nền tảng làm việc cho ứng dụng bên trên.
Khi các đối tương ứng dụng AE (Application Entity) đươc thiết lập, nó sẽ kết nối
với đến các phần tử dịch vụ ứng dụng ASE (Application Service Element). Trong mỗi
đối tương ứng dụng có thể gồm một hoặc nhiều các phần tử dịch vụ ứng dụng. Các phần
tử dịch vụ này đươc kết hơp trong môi trường của thực thể ứng dụng bằng việc sử dụng
các liên kết gọi là đối tương liên kết đơn SAO (Single Association Object). Đối tương
liên kết SAO điều khiển việc truyền thông, cho phép tuần tự hóa các sự kiện trùn
thơng.
Tầng Application có các dịch vụ ứng dụng cho các tác vụ email, chuyển tệp, cho
các phần mềm. Telnet, FTP là 2 ứng dụng tồn tại ở tầng này.
Ví dụ ứng dụng ở tầng Application: WWW, Telnet, HTTP, FTP, NFS, SNMP.
Presentation Layer – Tầng trình bày:
Tầng thứ hai kế tiếp tầng ứng dụng là tầng trình bày, tầng này nhận lấy các dữ
liệu từ tầng ứng dụng.
Chức năng: giải quyết các vấn đề liên quan đến các cú pháp và ý nghĩaa của
thông tin đươc truyền. Diễn giải thông tin người sử dụng phù hơp với thông tin làm việc
của mạng và ngươc lại.
Trên thực tế, thông tin biểu diễn các ứng dụng nguồn và ứng dụng đích có thể
khác nhau bởi các ứng dụng đươc chạy trên các hệ thống khác nhau.
Tầng Presentation cũng giống như với tầng ứng dụng, chúng chuyển hóa các dữ
liệu nhận đươc thành các dữ liệu. Chúng cũng định đạng, mã hóa rồi gửi các dữ liệu qua
mạng, độc lập với các vấn đề. Lớp này rất quan trọng vì dữ liệu cần phải đươc cấu trúc
chuẩn thì mới đối tương khác mới có thể hiểu đươc.
Session Layer – Tầng phiên:
Ngay từ các tầng đầu, bạn đã thấy từ session đươc lặp lại nhiều lần. Ở tầng
Session này nó cho phép người dùng có thể sử dụng các máy khác nhau thiết lập, đồng
bộ và duy trì phiên truyền thông giữa họ.
Hiểu theo cách đơn giản hơn thì Tầng phiên thiết lập “các giao dịch” giữa các
thực thể đầu cuối.
Ứng dụng phiên cung cấp liên kết giữa 2 đầu cuối sử dụng dịch vụ phiên, sao cho
đồng bộ đươc việc trao đổi dữ liệu đến khi kết thúc thì giải phóng liên kết. Sử dụng thẻ
Token để tiến hành việc truyền dữ liệu, đồng bộ hóa, hủy bỏ liên kết trong cả truyền
đồng thời hay luân phiên. Thiết lập các điểm đồng bộ hóa trong hội thoại. Khi xảy ra sự
cố có thể khơi phục hội thoại bắt đầu từ một điểm đồng bộ hóa đã thỏa tḥn.
Ví dụ ứng dụng ở tầng Session: NFS, SQL, RPC, NetBios Names.
Transport Layer – Tầng vận chuyển:
Đây là tầng cao nhất có liên quan đến các giao thức trao đổi dữ liệu trong các hệ
thống mở, tham gia vào việc kiểm soát truyền dữ liệu End-to-End. Còn chức năng chủ
yếu của 3 tầng dưới tầng vật lý, tầng liên kết dữ liệu và tầng mạng là để phục vụ việc
truyền dữ liệu giữa các tầng liền nhau.
Chức năng: chia gói tin lớn thành các gói nhỏ trước khi gửi đi, đánh số gói tin để
đảm bảo thơng tin trùn đi theo thứ tự mong muốn. Đây là lớp cuối phải chịu trách
nhiệm về độ an toàn của việc truyền dữ liệu đi. Chính vì thế mà giao thức tầng vận
chuyển phụ thuộc rất nhiều vào tầng mạng.
Tầng này cịn có thể thực hiện việc ghép kênh một vài liên kết vào chung một
liên kết nối giúp giảm giá thành.
Ví dụ ứng dụng ở tầng Transport: TCP, UDP, SPX.
Network Layer – Tầng mạng:
Chức năng: thực hiện việc chọn routing để các gói tin nguồn tới đích trong cùng
một mạng hoặc khác mạng. Routing này có thể là cố định, cũng có thể thể đươc định
nghĩa khi bắt đầu trao đởi, hay cũng có thể đường đi là động cho phép thay đổi theo
từng tập tin tùy vào trạng thái của mạng.
Khơng chỉ có vây, một chức năng cực kì quan trọng khác của tầng Network đó là
kiểm soát việc tắc nghẽn. Với trường hơp có quá nhiều gói tin đến đi cùng một lúc, trên
cùng 1 đường sẽ bị nghẽn thì Network sẽ giao tiếp các mạng để đưa gói tin từ mạng này
qua mạng khác chuyển tới đích cuối cùng.
Ví dụ ứng dụng ở tầng Network: IP, IPX.
Data Link Layer – Tầng liên kết:
Chức năng: Đương nhiên là tầng liên kết thì nhiệm vụ của nó là xây dựng nên
các mối liên kết, duy trì, hủy bỏ các liên kết dữ liệu đồng thời tiến hành việc kiểm soát
lỗi, kiểm soát lưu lương.
Để thực hiện đươc chức năng này thì nó cần phải phân chia thông tin ra các
khung thông tin, truyền các khung theo đúng thứ tự, xử lý các thông tin xác nhận từ
máy nhận gửi về. Sắp xếp, tháo gỡ các khung thành chuỗi bit không cấu trúc để chuyển
xuống tầng vật lý. Tầng 2 bên thu thì thực hiện tái tạo chuỗi bit về lại các khung thông
tin.
Trong quá trình xử lý, đường truyền vật lý có thể bị lỗi, vì thế mà tầng liên kết
phải giải kiểm soát lỗi, kiểm soát luồng, kiểm soát lưu lương, ngăn không để nút nguồn
gây “nghẽn” làm giảm tốc độ xử lý dữ liệu.
Trong các mạng quảng bá, tầng con MAC - Medium Access Sublayer điều khiển
việc duy trì nhập đường truyền
Ví dụ ứng dụng ở tầng Data Link: ATM, FDDI, IEEE 802.3/802.2, PPP, HDLC,
IEEE 802.5/802.2
Physical Layer – Tầng vật lý:
Physical Layer trong cấu trúc mô hình OSI thì là tầng thấp nhất. Tại đây thì các
đối tương thực hiện giao tiếp với nhau thông qua một đường truyền vật lý.
Chức năng: thực hiện xác định các chức năng, thủ tục về điện, cơ, quang giúp
kích hoạt, duy trì và giải phóng các kết nối vật lý giữa hệ thống mạng. Dịch vụ các cơ
chế về điện, hàm, thủ tục, … nhằm thực hiện việc kết nối các phần tử của mạng thành
một hệ thống bằng các phương pháp vật lý.
Chức năng của tầng vật lý giúp đảm bảo cho các yêu cầu chuyển mạch hoạt
động, tạo ra các đường truyền cho chuỗi bit thông tin. Các chuẩn trong tầng vật lý là các
chuẩn xác định giao diện người sử dụng và môi trường mạng.
Giao thức ở tầng vật lý chia ra làm 2 đó là: truyền dị bộ (Asynchronous) và
truyền đồng bộ (Synchronous).
Ví dụ ứng dụng ở tầng: V.35, V.24, FDDI, RJ45, Ethernet.- Số lương các lớp
khơng quá ít để đảm bảo thực hiện đủ các chức năng cần thiết và không đươc quá nhiều
để kiến thức của nó khơng trở nên cồng kềnh.
b. Mơ hình TCP/IP:
Hình 1. 2: Mơ hình TCP/IP
TCP/IP là tên viết tắt của cụm từ Transmission Control Protocol/Internet
Protocol, là một tập hơp các giao thức (protocol) trao đổi thông tin đươc sử dụng để
truyền tải và kết nối các thiết bị trong mạng Internet. Cụ thể hơn, TCP/IP chỉ rõ cho
chúng ta cách thức đóng gói thơng tin (cịn đươc gọi là gói tin ), đươc gửi và nhận bởi
các máy tính có kết nối với nhau.
Mơ hình TCP/IP tiêu chuẩn bao gồm 4 tầng đươc chồng lên nhau là:
- Tầng 1: Tầng vật lý (Network Access)
- Tầng 2: Tầng mạng (Internet)
- Tầng 3: Tầng giao vận (Transport)
- Tầng 4: Tầng ứng dụng (Application).
Vai trò và chức năng của các tầng :
Tầng ứng dụng (Application):
- Tầng ứng dụng cung cấp giao tiếp đến người dùng.
-
Cung cấp các ứng dụng cho phép người dùng trao đổi dữ liệu ứng dụng thông
qua các dịch vụ mạng khác nhau (như duyệt web, chat, gửi email,...).
- Dữ liệu khi đến đây sẽ đươc định dạng theo kiểu byte nối byte, cùng với đó là
các thơng tin định tuyến giúp xác định đường đi đúng của một gói tin.
Một số giao thức trao đổi dữ liệu:
FTP (File Transfer Protocol): giao thức chạy trên nền TCP cho phép truyền
các file ASCII hoặc nhị phân theo 2 chiều.
TFTP (Trival File Transfer Protocol) : giao thức truyền file chạy trên nền
UDP.
SMTP ( Simple Mail Transfer Protocol) : giao thức dùng để phân phối thư
điện tử.
Telnet : cho phép truy nhập từ xa để cấu hình thiết bị.
SNMP (Simple Network Managerment Protocol) : Là ứng dụng chạy trên
nền UDP , cho phép quản lý và giám sát các thiết bị mạng từ xa.
Domain Name System ( DNS) : Là giao thức phân giải tên miền, đươc sử
dụng trong hỗ trơ truy nhập Internet.
Tầng giao vận (Transport):
- Chịu trách nhiệm duy trì liên lạc đầu cuối trên toàn mạng.
- Tầng này có 2 giao thức chính là TCP ( Transmisson Control Protocol) và
UDP ( User Datagram Protocol).
- TCP sẽ đảm bảo chất lương truyền gửi gói tin, nhưng tốn khá nhiều thời gian
để kiểm tra đầy đủ thông tin từ thứ tự dữ liệu cho đến việc kiểm soát vấn đề
tắc nghẽn lưu lương dữ liệu.
- Trái với TCP, UDP có thấy tốc độ truyền tải nhanh hơn nhưng lại không đảm
bảo đươc chất lương dữ liệu đươc gửi đi (tức là nó khơng quan tâm dữ liệu có
đến đươc đích hay khơng).
Tầng mạng (Internet):
- Xử lý quá trình truyền gói tin trên mạng.
- Định tuyến: tìm tuyến đường qua các nút trung gian để gửi dữ liệu từ nguồn
tới đích.
- Chủn tiếp: chủn tiếp gói tin từ cởng nguồn tới cởng đích theo tuyến
đường.
- Định địa chỉ : định danh cho các nút mạng.
- Đóng gói dữ liệu: nhận dữ liệu từ giao thức ở trên, chèn thêm phần Header
chứa thông tin của tầng mạng và tiếp tục đươc chuyển đến tầng tiếp theo.
- Đảm bảo chất lương dịch vụ(QoS): đảm bảo các thông số phù hơp của đường
truyền theo từng dịch vụ.
- QoS (Quality of Service) là tập hơp các kĩ thuật cho phép cấp phát các tài
nguyên một cách thích hơp cho các loại dữ liệu khác nhau, từ đó có thể đảm
bảo chất lương dịch vụ mạng cho các loại dữ liệu này .
- Các giao thức của tầng này bao gồm: IP (Internet Protocol - giao thức đươc
sử dụng rộng rãi trong mọi hệ thống mạng trên phạm vi toàn thế giới), ICMP
(Internet Control Message Protocol), IGMP (Internet Group Message
Protocol).
Tầng vật lý (Network Access):
- Nó là sự kết hơp của tầng Data Link và Physical trong mô hình OSI (Mô hình
này các bạn tìm hiểu thêm nhé. Bản chất nó cũng tương tự như TCP/IP)
- Là tầng thấp nhất trong mô hình TCP/IP.
- Chịu trách nhiệm truyền dữ liệu giữa các thiết bị trong cùng một mạng. Tại
đây, các gói dữ liệu đươc đóng vào khung (Frame) và đươc định tuyến đi đến
đích đươc chỉ định ban đầu.
1.1.5. Giao thức mạng
Nói một cách đơn giản, giao thức là một bộ quy tắc. Giao thức mạng là một tập
hơp các quy tắc mà mạng phải tuân theo. Giao thức mạng là những tiêu chuẩn và chính
sách chính thức đươc tạo thành từ các quy tắc, quy trình và định dạng xác định giao tiếp
giữa hai hoặc nhiều thiết bị qua mạng. Các giao thức mạng thực hiện những hành động,
chính sách và giải quyết vấn đề từ đầu đến cuối, để quá trình giao tiếp mạng hoặc dữ
liệu diễn ra kịp thời, đươc bảo mật và quản lý. Giao thức mạng xác định các quy tắc và
quy ước giao tiếp.
Giao thức mạng kết hơp tất cả những yêu cầu tiến trình và có những ràng buộc
khi các máy tính, router, máy chủ và các thiết bị hỗ trơ mạng khác bắt đầu thực hiện
giao tiếp. Các giao thức mạng phải đươc xác nhận và cài đặt bởi người gửi và người
nhận để đảm bảo quá trình giao tiếp dữ liệu/mạng diễn ra suôn sẻ. Giao thức mạng cũng
áp dụng các node phần mềm và phần cứng giao tiếp trên mạng. Có một số loại giao thức
mạng phổ biến như sau:
Internet Protocol Suite hay còn gọi là bộ giao thức liên mạng. Giao thức này là
tập hơp các giao thức thực thi protocol stack (chồng giao thức) mà Internet chạy trên đó.
Cũng có thể gọi giao thức này là giao thức TCP/IP. Chúng đều là những giao
thức quan trọng trong Internet Protocol Suite. TCP- Transmission Control Protocol và
IP - Internet Protocol. Và cũng có thể hiểu Internet Protocol Suite tương tự như mô hình
OSI nhưng giữa chúng vẫn có sự khác biệt chứ khơng phải hồn tồn giống nhau. Ở
các lớp (layer) khơng phải lớp nào cũng đều tương ứng tốt.
Transmission Control Protocol (TCP) là giao thức điều khiển truyền vận.
Chúng là giao thức cốt lõi của Internet Protocol Suite (bộ giao thức liên mạng). Với
nhiệm vụ thực thi mạng, bổ sung cho Internet Protocol. Giao thức này đảm bảo chuyển
giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự.
TCP còn cung cấp một phương thức phân phối đáng tin cậy một luồng octet. Là
luồng khối dữ liệu có kích thước 8 bit, TCP cịn phân biệt giữa dữ liệu của nhiều ứng
dụng khác nhau.
Internet Protocol (IP) còn đươc gọi là giao thức Internet và chúng là giao thức
chính trong Internet protocol suite. Với khả năng chuyển tiếp dữ liệu qua mạng và giúp
thiết lập internet thông qua việc định tuyến của Internet Protocol.
IP cung cấp một dịch vụ gửi dữ liệu khơng đảm bảo nên gói dữ liệu có thể đến
nơi mà khơng cịn ngun vẹn, nó có thể đến không theo thứ tự. IP rất thông dụng trong
mạng internet ngày nay. Giao thức tầng mạng thông dụng nhất ngày nay là Ipv4 hoặc
Ipv6.
Hypertext Transfer Protocol (HTTP) - Giao thức truyền tải siêu văn bản.
Chúng là một trong năm giao thức chuẩn của mạng Internet. Giao thức này dùng để liên
hệ thông tin giữa máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web
client). Chúng hoạt trông trong mô hình Client/Server dùng cho World Wide
Web(www)
File Transfer Protocol (FTP) - Giao thức truyền tập tin. Và hướng đươc dùng
để trao đổi tập tin qua mạng lưới truyền thông dùng giao thức TCP/IP. Cổng mặc định
của FTP là 20/21.
Domain Name System (DNS) - Hệ thống phân giải tên miền. Hệ thống này là
một hệ thống cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền trên internet.
Nhờ giao thức này nên có thể chủn đởi tên miền thành địa chỉ IP. Cổng mặc định của
DNS là 53.
1.2. Tìm hiểu về web server
1.2.1. Web server là gì?
Web server đươc biết đến là máy chủ web đươc dùng để xử lý các request từ
trình duyệt web máy khách và gửi thông tin đến client thông qua giao thức HTTP hoặc
những giao thức khác. Có nhiều webserver phở biến thường đươc sử dụng hiện nay như:
Apache, Nginx, IIS...
Những chương trình trên web server đươc cài đặt nhằm phục vụ ứng dụng web.
Khi đươc tiếp nhận các request từ trình duyệt, webserver ngay lập tức sẽ gửi phản hồi
đến client thông qua giao thức HTTP hoặc những giao thức khác.
Để làm đươc điều này, mỗi máy chủ web server phải là một kho có dung lương
rất lớn và có thể tải ở tốc độ rất cao để có thể lưu trữ và vận hành tốt mọi kho dữ liệu
trên Internet. Thông qua các cổng giao tiếp riêng biệt, cấu hình máy chủ web đươc thiết
lập giúp điều hành hiệu quả cho cả một hệ thống máy tính hoạt động trên Internet.
Xây dựng máy chủ web server phải đảm bảo đươc quy trình hoạt động khắc
nghiệt, liên tục và không ngừng nghỉ để duy trì cung cấp dữ liệu thường xuyên cho
mạng lưới máy tính. Tóm lại, đây sẽ là nơi chứa tồn bộ dữ liệu hoạt động trên internet
mà nó đươc giao quyền quản lý.
1.2.2. Những phần chính quan trọng của web server
Hai phần chính quan trọng để thực hiện cấu hình máy chủ web khơng thể thiếu
đó là phần cứng hoặc phần mềm, đôi khi phải cả phần mềm lẫn phần cứng.
Về phía phần cứng: Máy chủ web server sẽ đươc kết nối với internet và truy cập
bằng một tên miền giống như mozilla.org. Đây cũng là nơi lưu trữ các file thành phần
của một website ( như file ảnh, CSS, Javascript và HTML) và có thể chuyển chúng tới
thiết bị người dùng cuối cùng.
Về phía phần mềm: Web server sẽ bao gồm các phần để điều khiển người dùng
truy cập tới các file lưu trữ trên một HTTP server. Một HTTP server là một phần mềm
có thể hiểu đươc các URL và giao thức trình duyệt đang sử dụng. Bất cứ lúc nào trình
duyệt cần đến file dữ liệu trên máy chủ, trình duyệt sẽ gửi yêu cầu file đó thông qua
HTTP.
Hình 1. 3. Những phần chính quan trọng của web server
Với hai phần cứng và phần mềm này bạn hoàn tồn có thể xây dựng một web
server đơn giản hoặc cầu kỳ ứng dụng cho việc nghiên cứu, phát triển, kinh doanh.
1.2.3. Chức năng của web server
Chức năng cơ bản của web server không thể thiếu là lưu trữ, xử lý và phân phối
nội dung website đến với khách hàng.
Xử lý dữ liệu qua giao thức HTTP: Xử lý và cung cấp thông tin cho khách hàng
thông qua các máy tính cá nhân trên Internet qua giao thức HTTP. Nội dung đươc chia
sẻ từ máy chủ web là những nội dung định dạng HTML, các thẻ style sheets, hình ảnh,
những đoạn mã script hỗ trơ nội dung văn bản thôi.... Đơn giản là khi truy cập vào
Bizfly.vn, máy chủ sẽ cung cấp tất cả dữ liệu về trang web đó thơng qua lệnh giao tiếp.
Kết nối linh hoạt: Máy tính nào cũng có thể là một máy chủ nếu nó đươc cài đặt
một chương trình phần mềm server và có kết nối internet.
Chương trình chuyển đổi thông minh: Phần mềm web server cũng giống như các
phần mềm khác, nó cho phép người dùng cài đặt và hoạt động trên bất kỳ máy tính nào
đáp ứng đủ yêu cầu về bộ nhớ. Lưu trữ dữ liệu trên hình thức thuê các máy chủ nhỏ,
máy chủ áo VPS hoặc hosting.
Vì thế khi thiết kế website xong, cần thực hiện đăng tải website lên web server để
giúp khách hàng có thể truy cập web ở nhiều nơi trên thế giới và hiểu đươc nội dung
bên trong.
1.2.4. Web server hoạt động như thế nào?
Dựa trên cấu hình máy chủ, muốn lấy một trang web, trình duyệt sẽ gửi một yêu
cầu (request) tới webserver.
Lúc này, nó sẽ tìm kiếm file đươc u cầu trên ở đĩa mà nó lưu trữ. Khi tìm thấy
file, máy chủ sẽ đọc và xử lý (nếu cần), cuối cùng sẽ gửi nó đến trình duyệt. Để hiểu các
bước cụ thể hơn hay xem ngay ở phần bên dưới.
Hình 1. 4. Hoạt động của web server
Mô hình hoạt động của web server:
Lưu trữ các file (Hosting files): web server chính là nơi lưu trữ các file của
website, bao gồm các tài liệu html, ảnh, file CSS, file Javascript, fonts và videos. Người
dùng có thể lưu trữ các file trên máy tính cá nhân nhưng nó sẽ có nhiều lơi ích khi
chúng ta lưu trữ chúng trên một máy chủ riêng biệt. Các lơi ích đó là:
- Luôn sẵn sàng tải lên và hoạt động
- Kết nối mạng internet 24/24
- Sở hữu một địa chỉ IP cố định
- Đươc bảo dưỡng từ nhà cung cấp
Dựa trên các lơi ích đó, việc lựa chọn một nhà cung cấp Web server tốt chiếm
một phần vô cùng quan trọng trong việc phát triển website của bạn.
Giao tiếp thông qua HTTP: HTTP (Hypertext Transfer Protocol) - Giao thức
truyền phát siêu văn bản, một giao thức sẽ là tập hơp các quy tắc để kết nối giữa hai
máy tính. Cụ thể HTTP là một giao thức Textual và Stateless.
- Textual: Tất cả các lệnh đều là văn bản thuần túy và người dùng đều có thể đọc
hiểu.
- Stateless: Là một ứng dụng server có nhiệm vụ cung cấp các quy tắc rõ ràng về
cách server (máy chủ) và client ( khách hàng) giao tiếp với nhau. Các quy tắc đó
cụ thể như sau:
- Web server bắt buộc trả lời mọi yêu cầu HTTP và chỉ mắc ít nhất một thơng điệp
lỗi.
- Chỉ khách hàng tạo đươc các yêu cầu HTTP tới các máy chủ. Tương tự, chỉ các
máy chủ mới có thể đáp trả yêu cầu HTTP của khách hàng.
- Khi yêu cầu một file qua HTTP, khách hàng phải cung cấp URL của file đó.
Nội dung static và dynamic: một web server có thể xử lý các nội dung static
hoặc nội dung dynamic.
Static web server: mỗi static sẽ bao gồm một Hardware kết hơp với HTTP Server.
Lúc này server máy chủ sẽ gửi những file như HTML, CSS, Javascript... tới trình duyệt
web
Dynamic web server: bao gồm một static cùng với một Application Server ( máy
chủ ứng dụng ) và một databaser. Lúc này Application Server sẽ cập nhật những file
đươc lưu trữ trực tiếp trên Database và gửi tới trình duyệt web thơng qua HTTP Server.
Chính là việc máy chủ xử lý nội dung hoặc có thể tạo ra dữ liệu dựa trên
database. Giải pháp này sẽ linh hoạt hơn, nhưng đòi hỏi kỹ thuật cao hơn để xử lý cũng
như quy trình xây dựng dynamic website khá phức tạp.
1.2.5. Những lưu ý khi sử dụng web server
Có hai lưu ý nhỏ khi sử dụng phần mềm để quá trình làm việc của bạn đạt đươc
hiệu quả tốt hơn. Hai lưu ý đó là:
Cần ch̉n bị một máy tính cấu hình cao, lưu trữ dung lương khủng và đáp ứng
đươc số lương lớn người dùng truy cập. Bởi xây dựng một máy chủ web là xây dựng
một ứng dụng giúp người dùng có thể tìm kiếm nhanh chóng mọi thơng tin liên quan
đến trang web của mình.
Cần đảm bảo việc khởi động và hoạt động không ngừng nghỉ 24/24 bởi một web
server sẽ phải hoạt động trực tuyến và cung cấp thơng tin nhanh chóng cho người dùng.
Nó giữ vai trị vơ cùng quan trọng trong việc chuyển đổi các thông tin từ máy chủ đến
các máy tính người dùng. Hiện nay dịch vụ cho thuê phần mềm server khá phát triển,
giữa hàng trăm lựa chọn khác nhau bạn cần hết sức tỉnh táo để tìm hiểu và lựa chọn
đươc địa chỉ cung cấp sản phẩm chất lương nhất.
1.3. Giới thiệu về giao thức HTTP
1.3.1. HTTP là gì
Hypertext Transfer Protocol (HTTP) là một giao thức thuộc tầng ứng dụng đươc
dùng để truyền tải các tài liệu đa phương tiện, ví dụ như HTML. Giao thức này đươc
thiết kế để truyền thông giữa các trình duyệt web và máy chủ web, tuy nhiên nó cũng
đươc dùng cho nhiều mục đích khác.
HTTP tn theo một mơ hình client-server trùn thống, với một client mở một
kết nối (connection) để tạo ra một yêu cầu (request), sau đó chờ đơi cho đến khi nó nhận
đươc phản một phản hồi (response).
HTTP là một giao thức không lưu lại trạng thái (stateless protocol), có nghĩa là
máy chủ khơng lưu giữ bất cữ dữ liệu (state) gì giữa các yêu cầu. Bởi thường đươc dựa
trên một lớp TCP/IP, nó có thể đươc sử dụng trên bất cứ tầng giao vận đáng tin cậy nào
(reliable transport layer) - những giao thức không bị mất dữ liệu, như là UDP.
Về cơ bản, HTTP là một giao thức giao tiếp trên cơ sở TCP/IP, mà đươc sử dụng
để phân phối dữ liệu (các tệp HTML, các file ảnh, …) trên WWW. Cổng mặc định là
TCP 80, những các cởng khác cũng có thể đươc sử dụng. Nó cung cấp một cách đươc
tiêu chuẩn hóa cho các máy tính để giao tiếp với nhau. Chi tiết kỹ thuật HTTP xác định
cách mà dữ liệu yêu cầu của Client sẽ đươc xây dựng và đươc gửi tới Server, và cách để
Server phản hồi các yêu cầu này.
1.3.2. Các đặt trưng cơ bản của HTTP
Có 3 đặc trưng cơ bản mà làm HTTP trở thành một giao thức đơn giản nhưng đầy
sức mạnh:
HTTP là giao thức connectionless (kết nối không liên tục): Client của HTTP, ví
dụ: một trình duyệt khởi tạo một yêu cầu HTTP và sau đó một yêu cầu đươc tạo ra,
Client ngắt kết nối từ Server và đơi cho một phản hồi. Server xử lý yêu cầu và thiết lập
lại sự kết nối với Client để gửi phản hồi trở lại.
HTTP là một phương tiện độc lập: Nó nghĩa là, bất kỳ loại dữ liệu nào cũng có
thể đươc gửi bởi HTTP miễn là Server và Client biết cách để kiểm soát nội dung dữ
liệu. Nó đươc yêu cầu cho Client cũng như Server để xác định kiểu nội dung bởi sử
dụng kiểu MIME thích hơp.
HTTP là stateless: Như đã đươc đề cập ở trên, HTTP là connectionless và nó một
kết quả trực tiếp là HTTP trở thành một giao thức Stateless. Server và Client biết về
nhau chi trong một yêu cầu hiện tại. Sau đó, cả hai chúng nó quên tất cả về nhau. Do
bản chất của giao thức, cả Client và các trình duyệt có thể giữ lại thông tin giữa các yêu
cầu khác nhau giữa các trang web.
1.3.3. Cấu trúc cơ bản
Sơ đồ dưới đây chỉ cấu trúc rất đơn giản của một ứng dụng web và miêu tả vị trí
của HTTP:
Hình 1. 5. Cấu trúc cơ bản của HTTP
Giao thức HTTP là một giao thức Yêu cầu/Phản hồi dựa trên cấu trúc
Client/Server, nơi mà các trình duyệt web, các thiết bị tìm kiếm,… hoạt động như các
Client, và các Server web hoạt động như một Server.
Client gửi một yêu cầu tới Server theo mẫu của một phương thức yêu cầu, URI,
và phiên bản giao thức, đươc theo bởi một thông báo MIME chứa các bộ chỉnh sửa yêu
cầu, thông tin Client, và nội dung đối tương có thể qua một kết nối TCP/IP.
Server phản hồi với một dòng trạng thái, bao gồm phiên bản giao thức của thông
báo và một code thành công hoặc lỗi, theo sau bởi một thông báo MIME chứa thông tin
Server, thông tin thực thể đa phương tiện và nội dung đối tương có thể.
1.3.4. Ưu nhươc điểm của giao thức HTTP
Ưu điểm:
- Giao thức HTTP độc lập, cho phép chuyển nền tảng chéo thẳng.
- Không địi hỏi hỗ trơ khi thực hiện đẻ có thể chạy chính xác, nó có thể sử
dụng trên tường lửa
- HTTP không phải là kết nối theo định hướng, không cần đầu vào mạng để
tạo và duy trì trang thái phiên và thơng tin.
Nhươc điểm:
- Khơng có tính tồn vẹn. Có thể dễ dàng thay đởi nội dung. HTTP khơng an
tồn vì nó khơng có phương thức mã hóa. Vì vậy, nó là đối tương thường bị
tấn cơng để nghe lén những thơng tin nhạy cảm.
- Khơng có xác thực. Bạn sẽ khơng có bất kỳ xác nhận rõ ràng nào về người và
bạn bắt đầu giao tiếp.
- Bất kỳ ai cũng có thể chặn yêu cầu gửi đi, biết đươc tên người dùng và mật
khẩu đang đươc sử dụng.
1.4. Tổng quan về ngôn ngữ Java
1.4.1. Ngôn ngữ Java là gì?
Java là một trong những ngôn ngữ lập trình hướng đối tương. Nó đươc sử dụng
trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động.
Java đươc khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem
năm 1991. Ban đầu Java đươc tạo ra nhằm mục đích viết phần mềm cho các sản phẩm
gia dụng, và có tên là Oak.
Java đươc phát hành năm 1994, đến năm 2010 đươc Oracle mua lại từ Sun
MicroSystem. Java đươc tạo ra với tiêu chí “Viết code 1 lần thực thi khắp nơi” (Write
Once, Run Anywhere – WORA). Chương trình phần mềm viết bằng Java có thể chạy
trên mọi nền tảng (platform) khác nhau thông qua một mơi trường thực thi với điều kiện
có mơi trường thực thi thích hơp hỗ trơ nền tảng đó.
1.4.2. Đặc điểm ngơn ngữ Java
-
-
-
-
-
-
Tính trừu tương (Abstraction): là tiến trình xác định và nhóm các thuộc tính,
các hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với
ứng dụng đang phát triển.
Tính đa hình (Polymorphism): cho phép một phương thức có các tác động khác
nhau trên nhiều loại đối tương khác nhau. Với tính đa hình, nếu cùng một
phương thức ứng dụng cho các đối tương thuộc các lớp khác nhau thì nó đưa đến
những kết quả khác nhau. Bản chất của sự việc chính là phương thức này bao
gồm cùng một số lương các tham số.
Tính kế thừa (Inheritance): điều này cho phép các đối tương chia sẻ hay mở
rộng các đặc tính sẵn có mà khơng phải tiến hành định nghĩa lại.
Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi những chi
tiết của một đối tương đối với người sử dụng đối tương ấy.
Độc lập nền (Write Once, Run Anywhere): không giống như nhiều ngôn ngữ
lập trình khác như C và C ++, khi Java đươc biên dịch, nó khơng đươc biên dịch
sang mã máy cụ thể, mà thay vào đó là mã byte code chạy trên máy ảo Java
(JVM). Điều này đồng nghĩa với việc bất cứ thiết bị nào có cài đặt JVM sẽ có thể
thực thi đươc các chương trình Java.
Đơn giản: nếu đã quen với các ngôn ngữ lập trình hướng đối tương thì việc học
Java sẽ dễ dàng hơn. Java trở nên đơn giản hơn so với C/C++ do đã loại bỏ tính
đa kế thừa và phép toán con trỏ từ C/C++.
Bảo mật: Java hỗ trơ bảo mật rất tốt bởi các thuật toán mã hóa như mã hóa một
chiều (one way hashing) hoặc mã hóa cơng cộng (public key)...
Đa luồng: với tính năng đa luồng Java có thể viết chương trình có thể thực thi
nhiều task cùng một lúc. Tính năng này thường đươc xử dụng rất nhiều trong lập
trình game.
Hiệu suất cao: nhờ vào trình thu gom rác (garbage collection), giải phóng bộ
nhớ đối với các đối tương không đươc dùng đến.
Linh hoạt: Java đươc xem là linh hoạt hơn C/C ++ vì nó đươc thiết kế để thích
ứng với nhiều mơi trường phát triển.
1.4.3. Tại sao nên sử dụng Java?
Java là một ngôn ngữ có tính cơ động vì nó phải đươc thực thi thơng qua một
máy ảo Java tương thích đa nền tảng (JVM). Ngoài ra, các ứng dụng Android cũng
đươc phát triển bằng cách sử dụng lập trình Java.
Khoảng 90% các công ty trong danh sách Fortune 500 Companies đã sử dụng
Java để phát triển các ứng dụng dành cho máy tính để bàn và các hệ thống phụ trơ
trang web vì các lý do sau:
- Thân thiện với người mới
- Dễ dàng sử dụng
- Dễ dàng bảo trì
- Tốc độ xử lý nhanh
- Hiệu suất tối ưu hóa
- Có nhiều thư viện mã nguồn mở phong phú
- Java là miễn phí…
1.4.4. Java đươc ứng dụng ở đâu?
Java đươc dùng để viết các ứng dụng như:
- Ứng dụng Android
- Ứng dụng máy chủ dùng trong các dịch vụ tài chính
- Ứng dụng web
- Cơng cụ phần mềm
- Cơng nghệ big data
- Ứng dụng khoa học
CHƯƠNG 2. PHÂN TÍCH HỆ THỐNG
2.1 HTTP là một Application Protocol dạng stateless
Stateless là design không lưu dữ liệu của client trên server. Có nghĩa là sau khi
client gửi dữ liệu lên server, server thực thi xong, trả kết quả thì “quan hệ” giữa client
và server bị “cắt đứt” – server không lưu bất cứ dữ liệu gì của client. Như vậy, khái
niệm “trạng thái” ở đây đươc hiểu là dữ liệu và cụm “phi trạng thái” có thể làm nhiều
người hiểu sai bản chất vấn đề.
Có 4 cách lưu data của client khi xây dựng Web Application:
- Sử dụng URL Rewriter: HTML là ngôn ngữ định dạng tài liệu, nó khơng phải là
ngơn ngữ lập trình nên khơng thể sử dụng các biến để lưu dữ liệu. Tuy nhiên, dữ
liệu có thể đươc viết vào các link (liên kết) và như thế khi người dùng click vào link
thì dữ liệu sẽ đươc gửi lên server. Phần lớn dữ liệu đươc viết vào phần query dưới
các cặp parameters gồm key=value (cặp khóa/giá trị), một vài cài đặt có thể đưa dữ
liệu vào phần path hay trong các biến của javascript,…
- Hidden Form: Thay vì lưu dữ liệu vào đường link, ta sẽ lưu dữ liệu vào các thành
phần của form và type (kiểu) của các element này là hidden – ẩn. Như vậy, mọi
action (hành xử) của người dùng sẽ gọi đến hành động post (gửi) form đó lên server
và như thế dữ liệu cần lưu ở lần trước đó sẽ đươc gửi lại. HTTP method đươc dùng
ở đây là Post chứ không phải Get trong URL Rewriter. Get là một dạng truy vấn cho
phép đọc (read) trong khi Post là một truy vấn cho phép ghi (write). Khi đó dữ liệu
của client gửi lên server sẽ nằm trong phần body của một HTTP Message chứ
không phải trong phần Header như việc dùng link (liên kết) ở trên.
- Sử dụng Cookie: Trình duyệt cho phép mỗi Web Application lưu khoảng 4kb dữ
liệu dưới dạng key/value. Như vậy, nếu ta lưu data của lần truy vấn trước đó vào
cookie thì giá trị này sẽ đươc gửi lên server trong mỗi request. Cookie là 1 phần
trong header của HTTP Message.
- Sử dụng HTTP Session: Ngươc với cookie, các Web Server có thể cho phép mỗi
client lưu một dung lương nhỏ data trên đó. Dữ liệu đươc lưu dưới dạng key/value
và sẽ bị expire nếu bị timeout (sau khoảng thời gian tính từ lúc client gửi truy vấn
cuối cùng đến server nếu vươt quá giới hạn thì sẽ bị hủy).
2.2. Các phương thức giao tiếp HTTP
HTTP định nghĩa các phương thức để chỉ ra các hành động mong muốn đươc
thực hiện trên tài nguyên đươc xác định.Thông thường, các tài nguyên tương ứng với
một tập tin hoặc đầu ra của một thực thi nằm trên máy chủ. HTTP/1.1 định nghĩa các
phương thức: GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE và CONNECT.
Trong đó 2 phương thức GET và POST đươc sử dụng nhiều nhất.
Phương thức
Hoạt động
GET
Đươc sử dụng lấy tài nguyên từ server
HEAD
Đươc sử dụng để lấy phần header mà
khơng có phần body
POST
Trình dữ liệu để xử lý đến tài nguyên đươc
xác định
PUT
Cho phép client upload tệp tin mới lên web
server
DELETE
Yêu cầu web server xóa tài nguyên đươc
xác định
CONNECT
Có thể cho phép client sử dụng website
như một proxy
OPTIONS
Trả lại danh sách các phương thức HTTP
mà đươc bật trên web server
Dội lại cho client bất cứ chuỗi nào đươc
gửi tới server
Bảng 1. 1: Bảng mô tả ngắn gọn về hành động của các phương thức HTTP
TRACE
2.2.1. GET
Phương thức GET đươc sử dụng để lấy thông tin từ Server bởi sử dụng một URI
đã cung cấp. Các yêu cầu sử dụng GET chỉ nhận dữ liệu và khơng có tác dụng khác.
Server phản hồi lại yêu cầu từ client, phản hồi chứa thông tin về trạng thái và có
thể cũng chứa cả nội dung đươc yêu cầu.
Giống như việc mình nhập URL để xem một trang tin tức có sẵn trên mạng.Ví
dụ: />Đây là phương thức GET, lấy dữ liệu là bài viết ở WebServer và gửi trả về 1 thẻ
Tag có chứa địa chỉ dữ liệu cho trang này.
2.2.2. POST
Phương thức POST yêu cầu web server chấp nhận và lưu trữ các dữ liệu kèm
theo trong phần body của request message đươc xác định bởi URI. POST thường đươc
sử dụng khi upload một tệp tin hoặc submit các web form, nhóm tin, chủ đề bình luận,..
2.2.3. PUT
Phương thức PUT yêu cầu các thực thể kèm theo đươc lưu trữ dưới URI đươc
cấp. Nếu URI tham chiếu đến tài nguyên đang tồn tại, nó sẽ đươc sửa đổi. Nếu URI
không trỏ đến một tài nguyên tồn tại, khi đó web server sẽ tạo tài nguyên với URI đó.
Nếu một tài nguyên đươc tạo, server sẽ phản hồi cho user agent mã trạng thái
201(created). Nếu một tài nguyên đang tồn tại đươc sửa đổi, thì mã trạng thái phản hồi
là 200 (OK) hoặc 204 (No content).
Sự khác nhau cơ bản giữa POST và PUT nằm ở ý nghĩa của các Request-URI:
- POST request xác định tài nguyên mà sẽ xử lý các thực thể kèm theo.
- Ngươc lại, các URI trong PUT request xác định các thực thể kèm theo với các
request – user agent biết cái gì URI đươc dự định và các máy chủ không phải cố
gắng để ứng dụng các request đến tài nguyên khác.
Dưới đây là ví dụ request và response phương thức PUT:
- Request:
PUT /test.txt HTTP/1.1
Host: example.com
Content-Length: 14
TEST
-
Reponse:
HTTP/1.1 201 Created
Location: /test.txt
Nếu phương thức PUT đươc bật trên web server, thì attacker có thể sửa đởi tài
ngun trên máy chủ hoặc thêm mã độc trên máy chủ đó (ví dụ upload tệp tin mà thực
thi dịng lệnh như gọi lệnh cmd.exe).
2.2.4. DELETE
Phương thức DELETE yêu cầu web server xóa tài nguyên đươc xác định với
Request-URI.
Một phản hồi thành công sẽ là 200 (OK) nếu phản hồi bao gồm một thực thể mô
tả trạng thái, 202 (Accept) nếu hành động chưa đươc xuất hoặc 204 (No content) nếu
hành động đã đươc xuất nhưng phản hồi không bao gồm một thực thể.
Phương pháp này không đảm bảo rằng thao tác đươc thực hiện, ngay cả khi mã
trạng thái từ máy chủ thông báo hành động đã thực hiện thành công.
Dưới đây là ví dụ request và response phương thức DELETE:
- Request:
DELETE /test.txt HTTP/1.1
Host:example.com
- Response:
HTTP/1.1 200 OK
Cache-Control: no-cache
Cache-Control: no-store
Date: Fri, 9 Dec 2016 10:54:46 GMT
[…]
OK
Phương thức này cho phép client xóa một tệp tin trên web server. Attacker có thể
khai thác nó đơn giản và trực tiếp deface website hoặc có thể sử dụng cho mục đích tấn
cơng DoS.
2.2.5. HEAD
Phương thức HEAD yêu cầu một phản hồi tương tự như yêu cầu GET, nhưng nó
khơng phản hồi phần body.
Điều này rất hữu ích cho việc lấy thơng tin meta trong phần header, mà khơng
cần phải chủn tồn bộ nội dung.
Dưới đây là ví dụ về Request và Response của phương thức HEAD:
- Request:
HEAD / HTTP/1.1
Host: example.com
- Response:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 9 Dec 2016 15:28:38 GMT
2.2.6. CONNECT