3 UDP: Giao thức không kết nối 3 Nguyên lý truyền tin tin cậy 3 TCP: Giao thức hướng kết nối 3 TCP điều khiển tắc nghẽn
Chương 4: Tầng Network
4 Giới thiệu 4 Mạng mạch ảo và mạng chuyển gói 4 IP: Internet Protocol 4 Các thuật toán Routing 4 Routing trong Internet
Chương 5: Tầng link
5 Một vài thuật ngữ 5 Các dịch vụ của tầng liên kết 5 Phát hiện và sửa lỗi 5 Giao thức đa truy cập 5 Địa chỉ MAC, Ethernet, Switch
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
Chương 1: Giới thiệu
1 Internet là gì?
Hàng triệu các thiết bị máy tính được kết nối:
- Hosts = hệ thống đầu cuối
- Chạy ứng dụng mạng
Các liên kết truyền thông:
- Cáp quang, cáp đồng, radio, vệ tinh
- Tốc độ truyền: băng thông [bandwidth]
Chuyển mạch gói: chuyển tiếp gói tin [khối dữ liệu]
- Thiết bị định tuyến [routers ] và thiêt bị chuyển mạch [switches]
Internet: “mạng of các mạng”
- Các nhà cung cấp dịch vụ mạng [ISPs] được kết nối với nhau.
Các giao thức điều khiển gửi, nhận thông tin
- Ví dụ: TCP, IP, HTTP, Skype, 802.
Các chuẩn Internet
- RFC: Request for comments
- IETF: Internet Engineering Task Force
Cơ sở hạ tầng cung cấp các dịch vụ cho các ứng dụng:
- Web, VoIP, email, games, thương mại điện tử, mạng xã hội, ...
Cung cấp giao diện lập trình cho các ứng dụng
- Cái móc [hooks] cho phép gửi và nhận các chương trình ứng dụng để “kết nối” với Internet
- Cung cấp các lựa chọn dịch vụ, tương tự như dịch vụ bưu chính.
Giao thức định nghĩa định dạng, thứ tự các thông điệp được gởi và nhận giữa các thực thể mạng, và các hành động được thực hiện trên việc truyền và nhận thông điệp
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
- Các packet có thể bị bỏ [mất] nếu bộ nhớ hàng đợi [bộ nhớ đệm] đầy
Chuyển mạch kênh: 2 điểm đầu cuối muốn trao đổi thông tin sẽ thiết lập 1 kênh truyền riêng [circuit] với băng thông được cấp phát dành riêng cho cả 2 cho tới khi truyền tin kết thúc
- Kênh không được chia sẽ nên sẽ rảnh rỗi lúc không truyền tin
Ghép kênh: gửi dữ liệu của nhiều kênh khác nhau trên một đường truyền vật lý
Phân kênh: phân dữ liệu được truyền trên đường truyền vật lý vào các kênh tương ứng và chuyền cho đúng đích
- Ghép kênh theo thời gian [TDM]: mỗi kết nối sử dụng tài nguyên trong thời gian được phân.
- Ghép kênh theo tần số [FDM]: mỗi kết nối sử dụng 1 băng tần tín hiệu riêng
So sánh giữa chuyển mạch gói và chuyển mạch kênh
Chuyển mạch gói Chuyển mạch kênh
❖ Ưu điểm: Băng thông được sử dụng tốt hơn do không bị giới hạn trên 1 kênh riêng Lỗi đường truyền không làm chậm trễ do có nhiều đường truyền khác nhau Nhiều người có thể sử dụng chung một đường truyền ❖ Nhược điểm: Độ trễ truyền lớn Dễ xảy ra mất gói tin nếu dung lượng lớn
❖ Ưu điểm: Tốc độ truyền và băng thông cố định Không có thời gian chờ tại các nút chuyển tiếp Có thể sử dụng lâu dài Chất lượng ổn định, không bị mất gói
❖ Nhược điểm: Nhiều kênh thì băng thông càng nhỏ
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
Chỉ một kênh truyền được sử dụng tại một thời điểm Kênh truyền sẽ duy trì cho đến khi 2 bên ngắt kết nối và có thể lãng phí băng thông nếu không truyền dữ liệu Thời gian thiết lập kênh truyền quá lâu
1 Độ trễ, thông lượng trong mạng
4 nguồn gây ra chậm trễ gói tin
- dproc: xử lý tại nút o Kiểm tra các bits lỗi o Xác định đường ra o Thông thường < ms
- dqueue: độ trễ xếp hàng o Thời gian đợi tại đường ra o Phụ thuộc vào mức độ tắc nghẽn của bộ định tuyến
- dtrans: độ trễ do truyền o L: chiều dài gói tin [bits] o R: băng thông [bps] o dtrans = L/R
- dprop: trễ do lan truyền o d: độ dài đường truyền vật lý o s: tốc độ lan truyền trong môi trường o dprop= d/s
Trong đó:
- R: băng thông đường link [bps]
- L: độ dài gói tin [bits]
- a: tỷ lệ trung bình gói tin đến
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
Chương 2: Tầng Application
2 Các nguyên lý của các ứng dụng mạng
Các kiến trúc ứng dụng:
- Kiến trúc Client – Server
- Kiến trúc P2P [Peer to peer]
Client – Server P2P Server - Luôn hoạt động
- Địa chỉ IP cố định
- Trung tâm phục vụ và lưu trữ dữ liệu
- Không có server
Client - Giao tiếp với server - Có thể kết nối không liên tục - Có thể dùng địa chỉ IP động - Không giao tiếp trực tiếp với các client khác
- Các hệ thống đầu cuối giao tiếp trực tiếp với nhau
- Các peer yêu cầu dịch vụ từ các peer khác và cung cấp dịch vụ ngược lại từ các peer khác => Có khả năng tự mở rộng
- Các peer được kết nối không liên tục và có thể thay đổi địa chỉ IP
- Quản lí phức tạp
Các tiến trình liên lạc:
- Tiến trình [Process] là chương trình chạy trong một host
- Trong cùng một host, hai tiến trình giao tiếp với nhau bằng cách sử dụng truyền thông liên tiến trình [inter-process communication] được định nghĩa bởi hệ điều hành
- Các tiến trình trong các host khác nhau truyền thông với nhau bởi trao đổi các thông điệp [message]
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
Clients, Servers:
- Tiến trình Client: tiến trình khởi tạo truyền thông.
- Tiến trình Server: tiến trình chờ đợi để được liên lạc.
Chú ý: Các ứng dụng với kiến trúc P2P có cả tiến trình client và tiến trình server.
Sockets: Điểm truy cập dịch vụ của tầng Transport
\=> Socket tương tự một cổng ra vào
Các tiến trình sử dụng socket gọi dịch vụ của tầng giao vận để trao đổi thông điệp
Để nhận thông điệp, tiến trình phải có định danh [identifier],bao gồm:
- Địa chỉ IP
- Số cổng [port numbers]
Thiết bị host device có địa chỉ IP 32-bit duy nhất
Một số Port tầng Application:
Protocol Port number Protocol Port number FTP 20 HTTP 80 SSH 22 Telnet 23 DNS 53 HTTPS 443 LPD 515 TFTP 69 SMTP 25 NFS 2049
Các dịch vụ giao thức Transport Internet
- Dịch vụ TCP: o Reliable transport [truyền tải tin cậy] giữa tiến trình gửi và nhận.
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
HTTP [Hypertext Transfer Protocol]: là giao thức web ở tầng Application
Mô hình Client / Server:
- Client: trình duyệt yêu cầu và nhận [sử dụng giao thức HTTP], hiển thị các đối tượng của web.
- Server: Web server gửi [sử dụng giao thức HTTP] các đối tượng để đáp ứng yêu cầu của Client
- RTT [Round Trip Time]: khoảng thời gian [tính bằng ms] để một gói tin nhỏ đi từ Client đến Server và quay ngược trở lại.
Các kết nối HTTP
HTTP không bền vững [Nonpersistent HTTP]
HTTP bền vững [Persistent HTTP]
- Chỉ tối đa một đối tượng được gửi qua kết nối TCP. Kết nối sau đó sẽ bị đóng.
- Tải nhiều đối tượng yêu cầu nhiều kết nối
- Nhiều đối tượng có thể gửi qua một kết nối TCP giữa Client và Server.
HTTP/1 [RFC 1945] HTTP/1 [RFC 2616] Thời gian đáp ứng
- Một RTT để khởi tạo kết nối TCP
- Một RTT cho yêu cầu HTTP và vài byte đầu tiên của đáp ứng HTTP được trả về
- Thời gian truyền file
- Thời gian đáp ứng HTTP không bền vững = 2RTT + thời gian truyền file.
Thời gian đáp ứng Persistent without pipelining
Persistent with pipelining
- 1RTT cho việc kết nối
- 1RTT cho mỗi đối tượng[không cần kết nối lại]
- 1RTT cho việc kết nối
- 1RTT cho tất cả đối tượng[không cần kết nối lại] Các phương thức: GET POST HEAD
Các phương thức: GET POST HEAD PUT DELETE
HTTP Cookies
- Là dữ liệu được gửi từ server tới trình duyệt của người dùng [Trạng thái User-server]. Trình duyệt sẽ lưu trữ cookie này và gửi lại theo mỗi HTTP request về cho cùng server đó
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
- Về cơ bản, cookie dùng để nói cho server biết các request đến từ một trình duyệt
- Do HTTP là stateless, mọi request đến server đều giống nhau, nên server không thể phân biệt request được gửi đến là từ một client đã thực hiện request trước đó hay từ một client mới
- Gồm 4 thành phần:
- Cookie header line của thông điệp đáp ứng HTTP
- Cookie header line trong thông điệp đáp ứng HTTP kế tiếp
- File cookie được lưu trữ trên host của người dùng, được quản lý bởi trình duyệt của người sử dụng
- Cơ sở dữ liệu back-end tại Website Một số ứng dụng: sự cấp phép, giỏ mua hàng, các khuyến cáo, trạng thái phiên làm việc của user [Web email].
Các mã trạng thái đáp ứng HTTP
- Mã trạng thái xuất hiện trong dòng đầu tiên trong thông điệp đáp ứng từ server tới client.
- Một số mã trạng thái thường gặp: o 200 OK – Yêu cầu thành công, đối tượng được yêu cầu sau ở trong thông điệp này o 301 Moved Permanently – Đối tượng được yêu cầu đã di chuyển, vị trí mới được xác định sau trong thông điệp này o 400 Bad Request – Thông điệp yêu cầu không được hiểu bởi server o 404 Not Found – Tài liệu được yêu cầu không tìm thấy trên server này o 505 HTTP Version Not Supported – Máy chủ không hỗ trợ phiên bản giao thức HTTP
Web caches [proxy server]
Mục tiêu:
- Đáp ứng yêu cầu của client mà không cần liên quan đến server gốc [server chứa đối tượng mà client cần]
- Giảm thời gian đáp ứng cho yêu cầu của client
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
- Tương tác lệnh/ phản hồi tương tự HTTP, FTP: o Lệnh: văn bản ASCII o Phản hồi: mã và cụm trạng thái
- Thông điệp phải ở dạng mã ASCII 7 bit SMTP dùng kết nối bền vững, yêu cầu thông điệp phải ở dạng ASCII 7 bit, dùng CRLF để xác định kết thúc thông điệp
So sánh SMTP và HTTP
Giống nhau: đều có tương tác lệnh/phản hồi, các mã trạng thái dạng ASCII.
Khác nhau:
SMTP HTTP Đẩy Kéo Nhiều đối tượng được gửi trong thông điệp nhiều phần
Mỗi đối tượng được đóng gói trong thông điệp phản hồi của nó
Các giao thức truy cập mail
SMTP: truyền dẫn/lưu trữ vào server của người nhận
Giao thức truy cập mail: trích xuất từ server
- POP[Post Office Protocol][RFC 1939] o Đăng nhập vào lấy hết thư từ mail server về client
- IMAP[Internet Mail Access Protocol] [RFC 1730] o Phức tạp hơn POP o Cho phép lưu trữ và xử lý thư trên máy chủ
- Gmail, Yahoo, Outlook,..
2 DNS
DNS [Domain Name System]: hệ thống phân giải tên miền, chuyển đổi các tên miền website sang địa chỉ IP dạng số và ngược lại
Ta đã biết rằng các thiết bị người dùng truy cập vào host device thông qua địa chỉ IP 32-bit và cổng Port. Nhưng chúng thường khó nhớ hơn so với việc truy cập
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
thông qua tên, ví dụ “Google”. Vì thế ta cần dịch vụ có thể dịch ngược từ tên miền ra địa chỉ IP tương ứng và ngược lại
Phân giải tên miền:
- Truy vấn lặp: server được liên lạc sẽ trả lời với tên server đã liên lạc
- Truy vấn đệ quy: đẩy trách nhiệm phân giải tên cho name server đã được tiếp xúc => Tải nặng tại các tầng trên của hệ thống phân cấp
Các dịch vụ DNS:
- Dịch tên host ra địa chỉ IP
- Bí danh host
- Bí danh mail server
- Phân phối tải
Các DNS có thẩm quyền:
- DNS server của riêng tổ chức cung cấp các tên host có thẩm quyền để ánh xạ địa chỉ IP cho các host được đặt tên của tổ chức đó.
- Có thể được duy trì bởi tổ chức hoặc nhà cung cấp dịch vụ.
DNS name server cục bộ:
- Không hoàn toàn theo cấu trúc phân cấp.
- Mỗi ISP [nhà cung cấp dịch vụ Internet] có một server cục bộ.
- Khi một host tạo một truy vấn DNS, truy vấn sẽ được gởi đến DNS server cục bộ của nó.
Một khi name server học cách ánh xạ, nó sẽ caches ánh xạ đó.
- Các mục cache sẽ biến mất sau một vài lần TTL [time to live, là thời gian tồn tại của một bản ghi [record] cấu hình tên miền được nhớ bởi một máy chủ DNS trung gian]
- TLD servers thường được cache trong các name server cục bộ
- Các name server gốc không thường xuyên được truy cập
Các mục được cache có thể hết hạn sử dụng
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
- Bên gửi chỉ rõ địa chỉ IP đích và số port cho mỗi packet
- Bên nhận lấy địa chỉ IP và số port của người gửi từ packet được nhận => Dữ liệu được truyền có thể bị mất hoặc được nhận không thứ tự
Lập trình socket với TCP
TCP: client phải tiếp xúc với server
- Tiến trình server phải được chạy trước
- Server phải tạo socket để mời client đến liên lạc
- Tạo socket TCP, xác định địa chỉ IP, số port của tiến trình server
- Khi client tạo socket: client TCP thiết lập kết nối đến server TCP
- Khi đã tiếp xúc với client: server TCP tạo socket mới cho tiến trình server để truyền thông với client đó => TCP cung cấp việc truyền các byte tin cậy và theo thứ tự giữa các client và server
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
Chương 3: Tầng Transport
3 Các dịch vụ tầng vận chuyển
Cung cấp truyền thông logic giữa các tiến trình ứng dụng đang chạy trên các host khác nhau
Các giao thức [protocol] chạy trên các hệ thống đầu cuối
- Phía gửi: chia nhỏ các thông điệp [message] ứng dụng thành các segments, sau đó chuyển các segments này cho tầng Mạng
- Phía nhận: tái kết hợp các segments thành các thông điệp [message], các thông điệp này được chuyển lên tầng Ứng dụng
Giao thức tầng Vận chuyển dành cho các ứng dụng: TCP và UDP
Quan hệ giữa Tầng Vận chuyển và tầng Mạng:
- Tầng Mạng: truyền thông logic giữa các host
- Tầng Vận chuyển: truyền thông logic giữa các tiến trình. Dựa trên dịch vụ tầng mạng
So sánh giao thức TCP và UDP
BAN HỌC TẬP CÔNG NGHỆ PHẦN MỀM
- Connectionless[phi kết nối]: không bắt tay giữa bên nhận và bên gửi; mỗi segment được xử lí độc lập
Ứng dụng của UDP: DNS, SNMP... Các ứng dụng đa phương tiện trực tuyến chịu mất mát data nhưng cần tốc độ như live video, stream...