Tìm kiếm nhanh và chính xác hơn với google tùy chỉnh

Thứ Sáu, 23 tháng 3, 2012

Truyền Tin Bằng Cờ – Semaphore

Semaphore hay tạm gọi là truyền tin thị giác (optical telegraph) là một công cụ dùng để truyền tin qua phương tiện tín hiệu nhìn thấy được với tháp cao cùng với các phiến quay quanh trục (pivoting blades) hay các cánh quạt (paddles), các cửa chớp (shutters) trong một hình thể ma trận (matrix), hoặc là các cờ cầm tay...Thông tin được mã hóa theo vị trí của các thành phần cơ học; nó được đọc khi các phiến hoặc cờ nằm ở một vị trí đã ấn định.
Trong thời hiện đại, nó thường được ám chỉ đến một hệ thống truyền tín hiệu bằng hai lá cờ cầm tay. Hệ thống semaphore dùng hai cán cờ ngắn có cờ hình vuông là một trong các phần cơ bản của kỹ thuật Hướng đạo.
Những hình thức tín hiệu thị giác khác còn có cờ hiệu hàng hải, đèn hiệu, và gương hiệu.
Semaphore ra đời trước điện tín. Chúng nhanh hơn người đưa tin đi bằng ngựa trên một quãng đường xa, nhưng phí tổn nhiều và ít được bảo mật hơn điện tín mà thay thế nó sau đó. Khoảng cách mà một tín hiệu thị giác có thể truyền đi bị hạn chế bởi địa hình và thời tiết, vì vậy đa số các phương tiện truyền tín hiệu thị giác trong thực tế thường sử dụng nhiều trạm tiếp vận để nối liên lạc những khoảng cách xa hơn. 

 Semaphore hiện đại
Hệ thống semaphore mới hơn dùng hai cán cờ ngắn có cờ hình vuông. Một người cầm cờ giữ chúng ở các vị trí khác nhau để truyền đi các mẫu tự và các số. Người cầm cờ giữ mỗi cờ trong mỗi tay, và đưa mỗi cánh tay của mình ở một trong 7 vị trí, các vị trí kế tiếp nhau cách nhau một góc 45 độ. Trừ khi ở vị trí nghỉ, hai cờ không thể chồng lên nhau. Màu cờ thì khác nhau dựa vào tín hiệu được truyền đi ở trên biển hay trên bờ. Màu đỏ và vàng cho cờ dùng ở biển trong khi màu trắng và xanh dương được dùng trên bờ. 


Các mẫu tự Semaphore
Các mẫu tự Semaphore sau đây được biểu thị như bạn đang đối diện với người cầm cờ:


Variable Length Subnet Mask (VLSM)

Nếu chúng ta được cấp dư dả địa chỉ IP thì chúng ta chỉ đơn giản là dùng Subnet Mark để chia.
Nhưng giả sử:
Cho trước net 192.168.1.0 /24. Yêu cầu triển khai 3 network sau: A 100 máy, B 60 máy và c 50 máy.
Vì đây là 3 mạng nên ta sẽ cần mượn 2 bit cho subnet, vậy là mỗi mạng còn 6 bit cho client, tức là có 2^6-2 = 62 địa chỉ ip có thể sử dụng cho mỗi mạng.
Vậy thì network A sẽ không đủ ip để sử dụng. VLSM (Variable Length Subnet Mask) được sinh ra để tối ưu quá trình chia địa chỉ này, vẫn có thể cấp cho các mạng mặc dù vẫn chỉ có dải địa chỉ từng đấy.


Cách chia

Đầu tiên tìm mạng yêu cầu ip nhiều nhất, đó là network A, mượn 1 bit thôi để chia lần 1, ta được 2 mạng với mỗi mạng có 7 bit cho host.
Mượn 1 bit để chia subnet, như vậy giá trị netmask mới là /25 (255.255.255.128).
Net 0:
192.168.1.0 (không dùng vì đây là địa chỉ đại diện cho net0)
192.168.1.1
192.168.1.2
.........

192.168.1.126
192.168.1.127 (không dùng vì đây là địa chỉ broadcast của net0)

Net 1:
192.168.1.128 (không dùng vì đây là địa chỉ đại diện cho net1)
192.168.1.129
192.168.1.130
.........

192.168.1.254
192.168.1.255 (không dùng vì đây là địa chỉ broadcast của net1)

Chọn Net0 cho HCM, lúc đó một máy ở HCM sẽ có IP dạng 192.168.1.x (x chạy từ 1 đến 126), netmask: 255.255.255.128.

Bây giờ ta chia net1 ra làm 2 bằng cách mượn thêm 1 bit nữa: /26 (255.255.255.192)

Ta sẽ có 2 net mới, mỗi net có 62 host (64 - 2)

net1a:
192.168.1.128 (không dùng vì đây là địa chỉ đại diện cho net1a)
192.168.1.129
192.168.1.130
.......
192.168.1.190
192.168.1.191 (không dùng vì đây là địa chỉ broadcast của net1a)

net1b:
192.168.1.192 (không dùng vì đây là địa chỉ đại diện cho net1b)
192.168.1.193
192.168.1.194
.....
192.168.1.254
192.168.1.255 (không dùng vì đây là địa chỉ broadcast của net1b)

Network A sẽ cho vào mạng đầu tiên, mạng còn lại ta chia tiếp, mượn thêm 1 bit nữa ở net1b , mỗi mạng sẽ có 2 bit subnet và 6 bit cho host, đủ xài.

Cách chia này subnet biến đổi nên người ta gọi là : Variable Length Subnet Mask


Nếu cảm thấy không hiểu vì sao lại hay thế thì các bạn có thể xem mô tả ở đây:
Nếu dùng subnet thì sẽ phải chia thẳng các mạng ra 4 lần (mượn 2 bit cho subnet), và mỗi mạng phải ấn vào 1 ô như ở dưới


A(không đủ)
B
C


Còn nếu cắt đôi , một nửa cho A rồi B và C chia đôi nửa còn lại thì sẽ dạng như sau

A
B
C


Một bài toán khác
192.168.1.0/24
cần chia cho 4 mạng : 60 , 4, 100, 12
Các bạn có thể vào trang http://www.vlsm-calc.net/  để trang web tính hộ và so sánh

CRC

CRC (cyclic redundancy check) là một loại hàm băm, được dùng để sinh ra giá trị kiểm thử, của một chuỗi bit có chiều dài ngắn và cố định, của các gói tin vận chuyển qua mạng hay một khối nhỏ của tệp dữ liệu. Giá trị kiểm thử được dùng để dò lỗi khi dữ liệu được truyền hay lưu vào thiết bị lưu trữ. Giá trị của CRC sẽ được tính toán và đính kèm vào dữ liệu trước khi dữ liệu được truyền đi hay lưu trữ. Khi dữ liệu được sử dụng, nó sẽ được kiểm thử bằng cách sinh ra mã CRC và so khớp với mã CRC trong dữ liệu.
CRC rất phổ biến, vì nó rất đơn giản để lắp đặt trong các máy tính sử dụng hệ cơ số nhị phân, dễ dàng phân tích tính đúng, và rất phù hợp để dò các lỗi gây ra bởi nhiễu trong khi truyền dữ liệu. 

Giới thiệu
CRC là một loại mã phát hiện lỗi. Cách tính toán của nó giống như phép toán chia số dài trong đó thương số được loại bỏ và số dư là kết quả, điểm khác biệt ở đây là sử dụng cách tính không nhớ (carry-less arithmetic) của một trường hữu hạn. Độ dài của số dư luôn nhỏ hơn hoặc bằng độ dài của số chia, do đó số chia sẽ quyết định độ dài có thể của kết quả trả về. Định nghĩa đối với từng loại CRC đặc thù quyết định số chia nào được sử dụng, cũng như nhiều ràng buộc khác.
Mặc dù các mã CRC có thể xây dựng được bằng cách sử dụng bất kỳ trường hữu hạn nào, nhưng tất cả các mã CRC thường dùng đều sử dụng trường hữu hạn GF(2). Đây là trường hai phần tử, thường được ký hiệu là 0 và 1, phù hợp với kiến trúc máy tính. Phần còn lại của bài viết sẽ chỉ đề cập đến những mã CRC thuộc dạng này, nhưng nguyên tắc thì khái quát hơn.
Một lý do quan trong lý giải sự phổ biến của mã CRC trong phát hiện sự thay đổi ngẫu nhiên của dữ liệu là hiệu suất đảm bảo. Điển hình, một mã CRC n bit, được áp dụng cho một đoạn dữ liệu có độ dài tùy ý, sẽ phát hiện được bất kỳ lỗi tín hiệu đơn nào có độ dài không quá n bit (nói cách khác, bất kỳ sự biến đổi đơn lẻ nào có chiều dài không quá n bit của dữ liệu), và sẽ phát hiện một phần 1-2-n của tất cả các lỗi tín hiệu có độ dài dài hơn thế. Các lỗi trong cả các kênh truyền dữ liệu và phương tiện bộ nhớ từ dẫn đến phân bố không ngẫu nhiên (v.d, "bursty"), làm cho các đặc tính của CRC trở nên hữu dụng hơn những mã khác như Multiple Parity checks.
Hệ thống tìm lỗi đơn giản nhất, bit parity (xet chẵn lẽ), thực ra là một mã CRC ở dạng tầm thường: sử dụng số chia độ dài 2 bit là 11.

Tính toán CRC
Để tính toán một mã nhị phân n bit CRC, xếp các bít biểu diễn đầu vào thành một hàng, và đặt mẫu (n+1) bit biểu diễn số chia của CRC (gọi là một "đa thức") vào bên dưới bên trái ở cuối hàng. Sau đây là phép tính đầu tiên để tính một hàm CRC 3 bít:
11010011101100 <--- Đầu vào
1011           <--- Số chia (4 bit = 3 + 1 bit)
--------------
01100011101100 <--- Kết quả (--> Lại đưa vào đầu vào của phép tính tiếp theo)
Nếu dãy nhị phân đầu vào bên trên có bít cực tả (đầu tiên bên trái) là 0, không làm gì hết và dịch số chia sang phải một bít. Nếu dãy nhị phân đầu vào bên trên có bít cực tả là 1, lấy dãy số đầu vào trừ đi số chia (hay nói cách khác, lấy từng bít ở dãy số đầu vào trên trừ đi từng bít ở số chia). Số chia sau đó dịch vị trí 1 bít sang phải, quá trình cứ tiếp diễn như vậy đến khi số chia chạm tới tận cùng bên phải của dãy số đầu vào. Đây là phép tính cuối cùng:
00000000001110 <--- Kết quả của phép nhân
          1011 <--- Số chia
--------------
00000000000101 <--- Số dư (3 bits)
Do cực tả của số chia sẽ làm các bít tương ứng của dãy số đầu vào trở về 0 qua mỗi lần dịch, khi quá trình này kết thúc, chỉ còn những bít ở dãy đầu vào có thể không là 0 trở thành n bit cuối bên phải của dãy số. n bit này là số dư của bước chia, và cũng sẽ là giá trị hàm CRC (trừ khi hàm CRC được chọn đặc biệt được gọi cho một số công đoạn tiền xử lý). 

Những hàm CRC thường dùng và được tiêu chuẩn hóa
Các dạng mã kiểm soát lỗi CRC (cyclic redundancy check) được chia thành nhiều tiêu chuẩn, chúng không được tiêu chuẩn hóa thống nhất cho 1 thuật toán nào ở mỗi mức độ trên toàn cầu: có 3 đa thức CRC-12[1], ít nhất 8 biến thể có trong tài liệu của CRC-16, và 3 biến thể của CRC-32[2] được biết đến. Các đa thức thường được xem như không phải là tối ưu nhất có thể. Trong những năm từ 1993 đến 2004, Koopman, Castagnoli và một số nhà khoa học đã tiến hành tìm kiếm trong không gian các đa thức lên đến 16[3], và không gian 24 và 32 bit,[4][5] tìm các ví dụ có hiệu suất tốt hơn nữa (trong các điều kiện quãng cách Hamming cho một bức tin có kích thước cho trước) so với các đã thức trong các giao thức trước đó, và xuất bản những kết quả tốt nhất trong số chúng với mục đích cải thiện năng tực tìm lỗi cho cac tiêu chuẩn trong tương lai[5].
Far from being arbitrarily chosen, đa thức phổ biển CRC-32 , được IEEE giới thiệu và được dùng trong V.42, Ethernet, FDDI và ZIP và các file PNG cũng như nhiều ứng dụng khác, là một đa thức sinh ra từ mã Hamming và được chọn để tìm lỗi[6] trong các kênh truyền thông. Dù vậy, nó còn có hiệu suất tốt hơn với đa thức Castagnoli CRC-32C sử dụng ở iSCSI[5] trong các môi trường Internet SCSI.
Bảng dưới đây chỉ liệt kê những đa thức của những thuật toán đa dạng đang được sử dụng. Bất kỳ giao thức cá biệt.
Tên Đa thức Các biểu diễn: thông thường hoặc nghịch đảo (đảo của đảo)
CRC-1 x + 1 (hầu hết phần cứng; còn biết với tên parity bit) 0x1 or 0x1 (0x1)
CRC-4-ITU x4 + x + 1 (ITU G.704, p. 12) 0x3 or 0xC (0x9)
CRC-5-ITU x5 + x4 + x2 + 1 (ITU G.704, p. 9) 0x15 or 0x15 (0x1A)
CRC-5-USB x5 + x2 + 1 (USB token packets) 0x05 or 0x14 (0x12)
CRC-6-ITU x6 + x + 1 (ITU G.704, p. 3) 0x03 or 0x30 (0x21)
CRC-7 x7 + x3 + 1 (Các hệ thống viễn thông, MMC,SD) 0x09 or 0x48 (0x44)
CRC-8-ATM x8 + x2 + x + 1 (ATM HEC) 0x07 or 0xE0 (0x83)
CRC-8-CCITT x8 + x7 + x3 + x2 + 1 (1-Wire bus) 0x8D or 0xB1 (0xC6)
CRC-8-Dallas/Maxim x8 + x5 + x4 + 1 (1-Wire bus) 0x31 or 0x8C (0x98)
CRC-8 x8 + x7 + x6 + x4 + x2 + 1 0xD5 or 0xAB (0xEA [3])
CRC-8-SAE J1850 x8 + x4 + x3 + x2 + 1 0x1D or 0xB8 (0x8E)
CRC-10 x10 + x9 + x5 + x4 + x + 1 0x233 or 0x331 (0x319)
CRC-11 x11 + x9 + x8 + x7 + x2 + 1 (FlexRay) 0x385 or 0x50E (0x5C2)
CRC-12 x12 + x11 + x3 + x2 + x + 1 (Các hệ thống viễn thông, [7][8] ) 0x80F or 0xF01 (0xC07)
CRC-15-CAN x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1 0x4599 or 0x4CD1 (0x62CC)
CRC-16-Fletcher Không phải một CRC; xem Fletcher's checksum Sử dụng trong Adler-32 A & B CRC
CRC-16-CCITT x16 + x12 + x5 + 1 (X.25, V.41, CDMA, Bluetooth, XMODEM, HDLC,PPP, IrDA, BACnet; known as CRC-CCITT, MMC,SD) 0x1021 or 0x8408 (0x8810 [3])
CRC-16-DNP x16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1 (DNP, IEC 870, M-Bus) 0x3D65 or 0xA6BC (0x9EB2)
CRC-16-IBM x16 + x15 + x2 + 1 (SDLC, USB, khác; còn được biết là CRC-16) 0x8005 or 0xA001 (0xC002)
CRC-24-Radix-64 x24 + x23 + x18 + x17 + x14 + x11 + x10 + x7 + x6 + x5 + x4 + x3 + x + 1 (FlexRay) 0x864CFB or 0xDF3261 (0xC3267D)
CRC-30 x30 + x29 + x21 + x20 + x15 + x13 + x12 + x11 + x8 + x7 + x6 + x2 + x + 1 (CDMA) 0x2030B9C7 or 0x38E74301 (0x30185CE3)
CRC-32-Adler Không phải một CRC; xem Adler-32 xem Adler-32
CRC-32-IEEE 802.3 x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 (V.42, MPEG-2, PNG [9]) 0x04C11DB7 or 0xEDB88320 (0x82608EDB [5])
CRC-32C (Castagnoli) x32 + x28 + x27 + x26 + x25 + x23 + x22 + x20 + x19 + x18 + x14 + x13 + x11 + x10 + x9 + x8 + x6 + 1 0x1EDC6F41 or 0x82F63B78 (0x8F6E37A0 [5])
CRC-32K (Koopman) x32 + x30 + x29 + x28 + x26 + x20 + x19 + x17 + x16 + x15 + x11 + x10 + x7 + x6 + x4 + x2 + x + 1 0x741B8CD7 or 0xEB31D82E (0xBA0DC66B [5])
CRC-64-ISO x64 + x4 + x3 + x + 1 (HDLC — ISO 3309) 0x000000000000001B or 0xD800000000000000 (0x800000000000000D)
CRC-64-ECMA-182 x64 + x62 + x57 + x55 + x54 + x53 + x52 + x47 + x46 + x45 + x40 + x39 + x38 + x37 + x35 + x33 + x32 + x31 + x29 + x27 + x24 + x23 + x22 + x21 + x19 + x17 + x13 + x12 + x10 + x9 + x7 + x4 + x + 1 (as described in ECMA-182 p.63) 0x42F0E1EBA9EA3693 or 0xC96C5795D7870F42 (0xA17870F5D4F51B49)
Đã từng tồn tại, nhưng không còn sử dụng trong công nghệ -- hầu hết được thay thế bằng các hàm mật mã băm (cryptographic hash functions):
  • CRC-128 (IEEE)
  • CRC-256 (IEEE)

md5

Trong mật mã học, MD5 (viết tắt của tiếng Anh Message-Digest algorithm 5, giải thuật Tiêu hóa tin 5) là một Bộ tạo Hash mật mã được sử dụng phổ biến với giá trị Hash dài 128-bit. Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật, và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Một bảng băm MD5 thường được diễn tả bằng một số hệ thập lục phân 32 ký tự.
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4. Vào năm 1996, người ta phát hiện ra một lỗ hổng trong MD5; trong khi vẫn chưa biết nó có phải là lỗi nghiêm trọng hay không, những chuyên gia mã hóa bắt đầu đề nghị sử dụng những giải thuật khác, như SHA-1 (khi đó cũng bị xem là không an toàn). Trong năm 2004, nhiều lỗ hổng hơn bị khám phá khiến cho việc sử dụng giải thuật này cho mục đích bảo mật đang bị đặt nghi vấn. 

Lịch sử và thuật giải mã 
Message Digest là một loạt các giải thuật đồng hóa thông tin được thiết kế bởi Giáo sư Ronald Rivest của trường MIT (Rivest, 1994). Khi công việc phân tích chỉ ra rằng giải thuật trước MD5-MD4- có vẻ không an toàn, ông đã thiết kế ra MD5 vào năm 1991 để thay thế an toàn hơn. (Điểm yếu của MD4 sau đó đã được Hans Dobbertin tìm thấy).
Vào năm 1993, Den Boer và Bosselaers đã tìm ra, tuy còn giới hạn, một dạng "xung đột ảo" của hàm nén MD5; đó là, với hai véc-tơ khởi tạo IJ khác nhau 4 bit, dẫn đến:
MD5compress(I,X) = MD5compress(J,X)
Trong năm 1996, Dobbertin đã thông báo có xung đột của hàm nén MD5 (Dobbertin, 1996). Dù nó không phải là một cuộc tấn công vào toàn bộ hàm băm MD5, nhưng nó đủ gần để các chuyên gia mã hóa đề nghị sử dụng kỹ thuật khác để thay thế, như WHIRLPOOL, SHA-1 hay RIPEMD-160.
Kích thước của bảng băm-128 bit-đủ nhỏ để bị tấn công bruteforce. MD5CRK là một dự án phân bố bắt đầu vào tháng 3 năm 2004 với mục tiêu chứng tỏ rằng MD5 không an toàn trên thực tế bằng cách tìm ra những xung đột sử dụng tấn công bruteforce.
MD5CRK kết thúc nhanh chóng sau ngày 17 tháng 8, 2004, khi xung đột đối với toàn bộ MD5 được công bố bởi Xiaoyun Wang, Dengguo Feng, Xuejia Lai, và Hongbo Yu[1][2]. Cuộc tấn công phân tích của họ được báo cáo là chỉ diễn ra có một giờ trên nhóm máy IBM p690.
Vào ngày 1 tháng 3 năm 2005, Arjen Lenstra, Xiaoyun Wang, và Benne de Weger đã biểu diễn[3] việc xây dựng hai giấy phép X.509 với các khóa công cộng khác nhau và cùng bảng băm MD5, một sự xung đột thực thế đáng được trình diễn. Sự xây dựng bao gồm những khóa riêng tư cho cả hai khóa công cộng. Vài ngày sau, Vlastimil Klima đã mô tả[4] một giải thuật nâng cao, có thẻ xây dựng những xung đột MD5 trong vài giờ với một máy tính xách tay. Vào ngày 18 tháng 3 năm 2006, Klima đã phát hành một giải thuật[5] có thể tìm thấy đụng độ trong vòng một phút bằng một máy tính xách tay, sử dụng một phương thức mà anh gọi là bắt đường hầm. 

Khả năng bị tấn công
Vì MD5 chỉ dò qua dữ liệu một lần, nếu hai tiền tố với cùng bảng băm được xây nên, thì cùng một hậu tố có thể cùng được thêm vào để khiến cho đụng độ dễ xảy ra. Tức là hai dữ liệu vào (input) X và Y hoàn toàn khác nhau nhưng có thể ra (output) được một md5 hash giống nhau . Tuy nhiên xác suất để xảy ra điều này là khá nhỏ.
Vì những kỹ thuật tìm đụng độ hiện nay cho phép các trạng thái băm trước đó được xác định một cách ngẫu nhiên, có thể tìm thấy xung đột đối với bất kỳ tiền tố mong muốn nào; có nghĩa là, đối bất kỳ một chuỗi các ký tự X cho trước, hai tập tin đụng độ có thể được xác định mà đều bắt đầu với X.
Tất cả những gì cần để tạo ra hai tập tin đụng độ là một tập tin mẫu, với một khối dữ liệu 128 byte được xếp trên giới hạn 64 byte, có thể thay đổi tự do bằng giải thuật tìm va chạm.
Vừa rồi, một số dự án đã tạo ra "bảng cầu vồng" MD5 có thể dễ dàng tiếp cận trực tuyến, và có thể được dùng để dịch ngược nhiều bảng băm MD5 thành chuỗi mà có thể đụng độ với đầu nhập gốc, thường dùng với mục đích bẻ mật khẩu. 

Ứng dụng
Các đồng hóa MD5 được dùng rộng rãi trong các phần mềm trên toàn thế giới để đảm bảo việc truyền tập tin được nguyên vẹn. Ví dụ, máy chủ tập tin thường cung cấp một checksum MD5 được tính toán trước cho tập tin, để người dùng có thể so sánh với checksum của tập tin đã tải về. Những hệ điều hành dựa trên nền tảng Unix luôn kèm theo tính năng MD5 sum trong các gói phân phối của họ, trong khi người dùng Windows sử dụng ứng dụng của hãng thứ ba.
Tuy nhiên, hiện nay dễ dàng tạo ra xung đột MD5, một người có thể tạo ra một tập tin để tạo ra tập tin thứ hai với cùng một checksum, do đó kỹ thuật này không thể chống lại một vài dạng giả mạo nguy hiểm. Ngoài ra, trong một số trường hợp checksum không thể tin tưởng được (ví dụ, nếu nó được lấy từ một lệnh như tập tin đã tải về), trong trường hợp đó MD5 chỉ có thể có chức năng kiểm tra lỗi: nó sẽ nhận ra một lỗi hoặc tải về chưa xong, rất dễ xảy ra khi tải tập tin lớn.
MD5 được dùng rộng rãi để lưu trữ mật khẩu. Để giảm bớt sự dễ thương tổn đề cập ở trên, ta có thể thêm salt vào mật khẩu trước khi băm chúng. Một vài hiện thực có thể áp dụng vào hàm băm hơn một lần-xem làm mạnh thêm khóa. 

Giải thuật

Hình 1. Một thao tác MD5—MD5 bao gồm 64 tác vụ thế này, nhóm trong 4 vòng 16 tác vụ. F là một hàm phi tuyết; một hàm được dùng trong mỗi vòng. Mi chỉ ra một khối tin nhập vào 32-bit, và Ki chỉ một hằng số 32-bit, khác nhau cho mỗi tác vụ.

dịch tráis chỉ sự xoay bit về bên trái s đơn vị; s thay dổi tùy theo từng tác vụ. Thêm chỉ cộng thêm với modulo 232.
MD5 chuyển một đoạn thông tin chiều dài thay đổi thành một kết quả chiều dài không đổi 128 bit. Mẩu tin đầu vào được chia thành từng đoạn 512 bit; mẩu tin sau đó được độn sao cho chiều dài của nó chia chẵn cho 512. Công việc độn vào như sau: đầu tiên một bit đơn, 1, được gắn vào cuối mẩu tin. Tiếp theo là một dãy các số zero sao cho chiều dài của mẩu tin lên tới 64 bit ít hơn so với bội số của 512. Những bit còn lại được lấp đầy bằng một số nguyên 64-bit đại diện cho chiều dài của mẩu tin gốc.
Giải thuật MD5 chính hoạt động trên trạng thái 128-bit, được chia thành 4 từ 32-bit, với ký hiệu A, B, CD. Chúng được khởi tạo với những hằng số cố định. Giải thuật chính sau đó sẽ xử lý các khối tin 512-bit, mỗi khối xác định một trạng thái. Quá trình xử lý khối tin bao gômg bốn giai đoạn giống nhau, gọi là vòng; mỗi vòng gồm có 16 tác vụ giống nhau dựa trên hàm phi tuyến F, cộng mô đun, và dịch trái. Hình 1 mô tả một tác vụ trong một vòng. Có 4 khả năng cho hàm F; mỗi cái được dùng khác nhau cho mỗi vòng:
F(X,Y,Z) = (X\wedge{Y}) \vee (\neg{X} \wedge{Z})
G(X,Y,Z) = (X\wedge{Z}) \vee (Y \wedge \neg{Z})
H(X,Y,Z) = X \oplus Y \oplus Z
I(X,Y,Z) = Y \oplus (X \vee \neg{Z})

/////////////////Đoạn này do NDC thêm vào////////////////////////

Đây là quá trình thực hiện xử lý của 4 hàm F, G, H, I ở trên:
Vòng 1 (Round 1): Ký hiệu [abcd k s t] là bước thực hiện của phép toán a = b + ((a + F(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước sau:
[ABCD   0  7   1] [DABC  1  12    2]  [CDAB   2  17    3]  [BCDA   3  22    4]
[ABCD   4  7   5] [DABC  5  12    6]  [CDAB   6  17    7]  [BCDA  7   22    8]
[ABCD   8  7   9] [DABC  9  12  10]  [CDAB 10  17  11]  [BCDA 11  22  12]
[ABCD 12  7 13] [DABC 13 12  14]  [CDAB 14  17  15]  [BCDA 15  22  16]
    Giải thích: ví dụ biểu thức thứ 2 là [DABC  1 12  2], tương đương với:
D = A + ((D + F(A,B,C) + X[1] + T[2]) <<< 12) Nhận xét: Vòng 1 dùng hàm F, Với giá trị t từ 1 -> 16 và k từ 1 -> 15
Vòng 2 (Round 2): Tương tự, ký hiệu [abcd k s t] là của biểu thức : a = b + ((a + G(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước :
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
Nhận xét: Vòng 2 dùng hàm G, với t từ 17 -> 32 và k = 1 + 5k mod 16
Vòng 3 (Round 3):
Tương tự, ký hiệu [abcd k s t] là của biểu thức : a = b + ((a + H(b, c, d) + X[k] + T[t]) <<< s)
Quá trình thực hiện 16 bước:
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 1 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 5 16 47] [BCDA 2 23 48]
Nhận xét: Vòng 3 dùng hàm H, với t từ 33 -> 48 và k =5 + 3k mod 16
Vòng (Round 4):
Tương tự, ký hiệu [abcd k s t] là của biểu thức:
a = b + ((a + I(b,c,d) + X[k] + T[t]) <<< s)
Quá trình thực hiện 16 bước :
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCDb 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
Nhận xét: Vòng 4 dùng hàm I, với t từ 49 -> 64 và k =7k mod 16
/* Sau đó làm các phép cộng sau. ( Nghĩa là cộng vào mỗi thanh ghi giá trị của nó trước khi vào vòng lặp ) */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
End /* of loop on i */

Bước 5 : Tính kết quả message digest. Sau khi thực hiện xong bước 4, thông điệp thu gọn nhận được từ 4 thanh ghi A, B, C, D, bắt đầu từ byte thấp của thanh ghi A và kết thúc với byte cao của thanh ghi D bằng phép nối như sau: Message Digest = A || B || C || D. ( || phép toán nối)
///////////////////////////////////////////////////////////////////////
\oplus, \wedge, \vee, \neg lần lượt chỉ phép XOR, AND, OR và NOT. 

Mã giả

Mã giả cho giải thuật MD5 như sau.
//Chú ý: Tất cả các biến đều là biến không dấu 32 bit và bao phủ mô đun 2^32 khi tính toán
var int[64] r, k

//r xác định số dịch chuyển mỗi vòng
r[ 0..15] := {7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22} 
r[16..31] := {5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20}
r[32..47] := {4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23}
r[48..63] := {6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21}

//Sử dụng phần nguyên nhị phân của sin của số nguyên làm hằng số:
for i from 0 to 63
    k[i] := floor(abs(sin(i + 1)) × (2 pow 32))

//Khởi tạo biến:
var int h0 := 0x67452301
var int h1 := 0xEFCDAB89
var int h2 := 0x98BADCFE
var int h3 := 0x10325476

//Tiền xử lý:
append "1" bit to message
append "0" bits until message length in bits ≡ 448 (mod 512)
append bit (bit, not byte) length of unpadded message as 64-bit little-endian integer to message

//Xử lý mẩu tin trong đoạn 512-bit tiếp theo:
for each 512-bit chunk of message
    break chunk into sixteen 32-bit little-endian words w[i], 0 ≤ i ≤ 15

    //Khởi tạo giá trị băm cho đoạn này:
    var int a := h0
    var int b := h1
    var int c := h2
    var int d := h3

    //Vòng lặp chính:
    for i from 0 to 63
        if 0 ≤ i ≤ 15 then
            f := (b and c) or ((not b) and d)
            g := i
        else if 16 ≤ i ≤ 31
            f := (d and b) or ((not d) and c)
            g := (5×i + 1) mod 16
        else if 32 ≤ i ≤ 47
            f := b xor c xor d
            g := (3×i + 5) mod 16
        else if 48 ≤ i ≤ 63
            f := c xor (b or (not d))
            g := (7×i) mod 16
 
        temp := d
        d := c
        c := b
        b := b + leftrotate((a + f + k[i] + w[g]) , r[i])
        a := temp

    //Thêm bảng băm của đoạn vào kết quả:
    h0 := h0 + a
    h1 := h1 + b 
    h2 := h2 + c
    h3 := h3 + d

var int digest := h0 append h1 append h2 append h3 //(expressed as little-endian)
//định nghĩa hàm dịch trái
  leftrotate (x, c) 
      return (x << c) or (x >> (32-c)); 

Ghi chú: Thay vì hàm hóa RFC 1321 gốc như trên, phần sau có thể được dùng để tăng độ hiệu quả (hữu ích nếu ngôn ngữ assembly được dùng - còn không, chương trình dịch sẽ tự động tối ưu hóa đoạn mã ở trên):
(0  ≤ i ≤ 15): f := d xor (b and (c xor d))
(16 ≤ i ≤ 31): f := c xor (d and (b xor c))
 
Các bảng băm MD5
Bảng băm MD5 128 bit (16 byte) (còn được gọi là message digests) được biểu diễn bằng chuỗi 32 số thập lục phân. Sau đây cho thấy đầu vào ASCII 43 byte và bảng băm MD5 tương ứng:
MD5("The quick brown fox jumps over the lazy dog") 
  = 9e107d9d372bb6826bd81d3542a419d6
Thậm chí một sự thay đổi nhỏ trong mẩu tin cũng dẫn đến thay đổi hoàn toàn bảng băm, do hiệu ứng thác. Ví dụ, thay d thành e:
MD5("The quick brown fox jumps over the lazy eog") 
  = ffd93f16876049265fbaef4da268dd0e
Bảng băm của một chuỗi rỗng là:
MD5("") 
  = d41d8cd98f00b204e9800998ecf8427e

Bit chẵn lẻ

Bit chẵn lẻ (tiếng Anh: parity bit) là một bit dùng để báo hiệu số lượng bit có giá trị bằng 1(2) trong một nhóm bit cho trước là một số chẵn hay là một số lẻ. Bit chẵn lẻ được sử dụng như là một mã dùng để phát hiện lỗi đơn giản nhất.
Có hai loại mã chẵn lẻ: bit chẵn lẻ dùng quy luật số chẵn (even parity bit) và bit chẵn lẻ dùng quy luật số lẻ (odd parity bit). Bit chẵn lẻ dùng quy luật số chẵn có giá trị bằng 1(2) khi số lượng các bit 1, trong một nhóm bit cho trước, là một số lẻ (và khi cộng thêm bit chẵn lẻ vào, tổng số lượng bit có giá trị bằng 1(2) là một số chẵn). Ngược lại, bit chẵn lẻ dùng quy luật số lẻ có giá trị bằng 1(2) nếu số lượng các bit 1, trong một nhóm bit cho trước, là một số chẵn (và khi cộng thêm bit chẵn lẻ vào, tổng số bit có giá trị bằng 1(2) là một số lẻ). Bit chẵn lẻ dùng quy luật chẵn là một trường hợp đặc biệt của kỹ thuật kiểm tra độ dư tuần hoàn (cyclic redundancy check - CRC). Trong CRC, bit CRC được kiến tạo bằmg cách dùng đa thức (polynomial) x+1. 

Phát hiện lỗi
Nếu một số lẻ lượng các bit (bao gồm cả bit chẵn lẻ), bị đảo lộn trong khi truyền thông một nhóm bit, thì bit chẵn lẻ sẽ có giá trị không đúng, và do đó báo hiệu rằng lỗi trong truyền thông đã xảy ra. Với lý do này, bit chẵn lẻ còn được gọi là một mã phát hiện lỗi, song nó không phải là một mã sửa lỗi, vì nó chẳng có cách nào xác định được vị trí của bit bị lỗi cả. Khi lỗi bị phát hiện, dữ liệu thu được phải bị bỏ đi và phải được truyền thông lại từ đầu. Trên kênh truyền có độ nhiễu cao, việc truyền tải dữ liệu thành công là một việc rất hao tốn thời gian, và đôi khi, việc truyền thông còn hầu như không thể thực hiện được nữa. Bit chẵn lẻ có một ưu điểm: nó là một mã tốt nhất chiếm chỉ một bit và chỉ dùng vài cồng XOR (XOR gate) để tạo giá trị mà thôi. Xin xem thêm mã Hamming để biết thêm về các mã sửa lỗi khác. 

Ứng dụng
Do đặc tính đơn giản của nó, bit chẵn lẻ được dùng trong rất nhiều ứng dụng phần cứng, những nơi mà việc tái diễn các thao tác khi có trục trặc xảy ra là một việc có thể thực hiện được, hoặc những nơi mà việc phát hiện lỗi đơn thuần là một việc có lợi. Lấy ví dụ, mạch nối SCSI (SCSI bus) dùng bit chẵn lẻ để phát hiện lỗi trong truyền thông, và rất nhiều các phần lưu trữ trong bộ nhớ các lệnh vi xử lý (microprocessor instruction cache) cũng dùng bit chẵn lẻ để bảo trợ hoạt động của nó nữa. Do các dữ liệu trong I-cache[1] chỉ là một bản sao của bộ nhớ chính (main memory), nội dung của nó có thể được xóa đi, nạp lại nếu dữ liệu ở trong chẳng may bị thoái hóa (corrupted).
Trong truyền thông dữ liệu nối tiếp (serial data transmission), dạng thức dữ liệu được dùng phổ thông nhất là dạng thức 7 bit, với một bit chẵn lẻ dùng quy luật số chẵn, một Start bit và một hoặc hai Stop bit để đánh dấu/đồng bộ điểm bắt đầu cũng như kết thúc một byte dữ liệu trong chuỗi bit trên đường truyền. Dạng thức này thích ứng hầu hết các dạng thức 7-bit ký tự ASCII dưới hình thức byte 8-bit. Một byte dữ liệu trên đường truyền nối tiếp sẽ gồm 01 Start bit (bắt đầu), 7 bit dữ liệu, một parity bit và 01 Stop bit (kết thúc). Byte là một hình thức tiện lợi để biểu đạt dữ liệu. Những dạng thức khác cũng có thể thực hiện được, như dạng thức 8 bit dữ liệu cộng với một bit chẵn lẻ có thể dùng để chuyên chở tất cả các giá trị byte 8-bit.
Trong ngữ cảnh của truyền thông nối tiếp (serial communication), bit chẵn lẻ thường được phát sinh và kiểm tra bởi phần cứng giao thức - chẳng hạn như UART - và khi thu nhận, CPU có thể sử dụng kết quả nhận được (và hệ điều hành nữa) thông qua bit báo tình hình (status bit) trong thanh ghi của phần cứng giao thức. Việc khôi phục lại sau khi tình trạng lỗi xảy ra thường được thi hành bằng cách tái truyền dữ liệu, và chi tiết của việc này thường là do phần mềm phụ trách (ví dụ dùng các thường trình nhập/xuất (I/O routine) của hệ điều hành). 

Khối chẵn lẻ
Khối chẵn lẻ (parity block) được dùng trong một số cấu hình RAID[2], và bằng cách dùng các khối chẵn lẻ, người ta đạt được tính dư thừa. Nếu một trong các ổ đĩa ở trong dãy đĩa bị hỏng, người ta có thể dùng các khối dữ liệu và các khối chẵn lẻ trong các đĩa còn làm việc để kiến tạo lại dữ liệu bị thất lạc (dữ liệu này nguyên ở trong cái đĩa bị hỏng).
Trong biểu đồ vẽ sẵn dưới đây, mỗi cột là biểu tượng của một ổ đĩa. Giả sử A1 = 00000111, A2 = 00000101, and A3 = 0000000. Ap - phát sinh do xử lý XOR giữa A1, A2, và A3 - sẽ có giá trị bằng 00000010. Nếu ổ đĩa thứ hai bị hỏng và giá trị A2 không thể truy cập được, thì giá trị này có thể được kiến tạo lại bằng xử lý XOR A1, A3, và Ap như sau:
A1 XOR A3 XOR Ap = 00000101
RAID Array
 A1        A2        A3
 Ap        B1        B2
 Bp        C1        C2
 C3        C4        Cp
Lưu ý: Các khối dữ liệu được đánh dấu theo hình thức A# (# ám chỉ một con số), khối chẵn lẻ là Ap (p = parity). 

Ghi chú
  1. ^ I-cache - hay Instruction cache (Bộ trữ vi lệnh) - là một bộ nhớ trung gian giữa bộ nhớ ngoại biên và bộ điều hành xử lý trung tâm. Khi mã lệnh được thi hành, các từ mã tại các địa chỉ mà các vi lệnh yêu cầu, được sao chép vào bộ trữ vi lệnh để bộ điều hành xử lý trung tâm có thể truy cập các vi lệnh một cách trực tiếp. Khi một mã lệnh được dùng thường xuyên trong một nhóm các mã lệnh của trình ứng dụng, việc lưu trữ các vi lệnh trong bộ trữ (cache) cho phép bộ điều hành xử lý trung tâm truy cập chúng với tốc độ cao hơn, và không phải truy cập chúng từ mạnh nối ngoại biên (external bus), tiết kiệm được thời gian và nâng cao công suất xử lý.
  2. ^ RAID là cái tên viết tắt trong tiếng Anh: Redundant Array of Independent Disks - tạm dịch là "Dãy đĩa dư độc lập" là một hình thức sử dụng nhiều ổ cứng cùng một lúc. Có nhiều cấu hình tổ chức cách dùng các ổ cứng. Một trong số các cấu hình thường dùng là cấu hình "phân tỏa" (stripped set) hay còn gọi là RAID 0, cấu hình "phản chiếu" (mirrored set) hay còn cọi là RAID 1, và cấu hình "phân tỏa dùng bit chẵn lẻ" (Stripped set with parity) hay còn gọi là RAID 5.

Toeic A - Listening

Sơ qua về Toeic :
  • Có 2 tiếng để hoàn thành
  • Có Nhiều lựa chọn kiểm tra
  • Bài test chỉ sử dụng một tờ giấy và bút chì
  • Bao gồm 2 phần : listening ( 45') và reading ( 75')
  • Bao gôm 200 câu hỏi ( 100 cho mỗi phần )
Cấu trúc một bài Listening như sau : ( Đối với New Test)
  • Part 1 Miêu tả tranh : 10 question
  • Part 2 Hỏi và Trả lời : 30 question
  • Part 3 Đoạn hội thoại ngắn : 30 câu ( chia làm 10 phần, 3 câu hỏi cho mỗi phần )
  • Part 4 : Mẩu chuyện ngắn : 30 câu ( chia làm 10 phần, 3 câu hỏi cho mỗi phần )
1. Phần 1 : Miêu tả tranh
1.1 Yêu cầu khi test cần làm :
  • Xem 20 bức tranh
    Nghe 4 phát biểu cho mỗi bức tranh
  • Không thể nhìnthấy các câu phát biểu trên bài kiểm tra
  • Chọn câu mà miêu tả chíh xác nhất bức tranh
  • Dừng 5s giữa mỗi miêu tả bức tranh
1.2 Bạn nên :
  • Xem thật nhanh bức tranh trước khi nghe
  • Có thể hiểu chung tổng quát về bức tranh
  • Nghe tất cả các lựa chọn. Thật cẩn thận với những phát biểu đúng về bức tranh
  • Để ý thời gian.
1.3 Bạn luôn phải đặt ra các câu hỏi cho chính mình như sau :
  • Nó được xảy ra ở đâu?
  • Đối tượng chính trong bức tranh là gì?
  • Điều gì đang xảy ra?
  • Nếu là người thì họ là ai? Đối với ngừoi thì xem họ là phụ nữ hay đàn ông, cách nào để nói (womain/man), kiểu hoạt động : bê, đứng, mang vác, mối quan hệ của họ trong bức tranh. Đối với vật thì nhận định xem : khoảng cách, kích thước, mối quan hệ với các vật khác.
  • Xác định xem ý tưởng chính của bức tranh và loại bỏ các thành phần khác.
1.4 Trong quá trình nghe :
So sánh và đối chiếu với các câu đã làm
Quyết định xem câu nào là sai, có thể là đúng
Câu có thể sai : hoạt động như trong bức tranh nhưng người hay vật khác hoặc ngược lại, vì vậy ta phải để ý thật kỹ.
Phải nghe kỹ lưỡng 4 đáp án và chọn cái phù hợp nhất, chú ý là cái phù hợp nhất với bức tranh.
Nếu nghe cả 4 câu mà chưa chọn được câu trả lời, thì ta bỏ qua để làm các câu tiếp theo. Và sau ta sẽ chọn random câu ta bỏ qua.

2 Question and Respone

Ở phần này bạn phải nghe 30 câu. Mỗi câu hỏi sẽ 3 lựa chọn : A,B,C.
Câu trả lời cho câu hỏi sẽ không có trong đề thi
Các câu hỏi chỉ được nói 1 lần duy nhất. Vì vậy bạn nên tập trung vào mục đích của câu hỏi. Loại câu hỏi gi : when, why, what, where, yes/no question..
Example :
you will hear : where is the meeting room?
You will also hear :
(A) To meet the new director
(B) It's the first room on the right
(C) yes, at two o'clock
1. (A) (B) (C)

Loại listening question & statêmnts gồm có 9 loại câu hỏi : câu hỏi who, when, where, why. what, how, Y/n question, choice, statement
2.1 Who - question
Đây là câu hỏi về người, một nhóm người, một tổ chức..
Câu hỏi này thường bắt đầu với who và whom, whose = N.
Eg: Whom did u get message from?
A. The manager of the payroll department
B. Yesterday, we takked about it
C. John didn't know about the message
Một bài tập nhỏ về cách dùng who, whom, whose


1. Is the new secretary’s name Bill or John?
a. Yes, he started working for me yesterday
2. Whose name is the reservation under?
b. I sent copies to everyone in our department
3. Who didn’t go to the meeting yesterday?
c. Martha wasn’t there
4. Who is helping you with that report?
d. Eric is working on it with me
5. What’s the director’s name?
e. It’s Mrs. Sullivan

g. I think he is called Bill

h. It’s under my name

i. Her name is Samantha

2.2 When question :

Ta tập trung vào những từ chỉ thời gian khi nghe như : when, during, at..o'clock/am/pm, ago, in the morning, at night, on monday, by Friday, yesterday/tomorrow, next/last week,..
Eg: when did u get up this morning ?
A. At dawn
B. Yes, I got up this morning
C. Because of a loud noise
Luyện tập với câu hỏi when

1. When will you move your office?
a. We are still waiting for Mr. Robert
2. Mark is always on time for dinner, isn’t he?
b. Yes, it was over in less than an hour
3. Has every one shown up for the meeting yet?
c. Let’s just wait another few minutes
4. When is the new manager going to start work?
d. At the end of the month , I hope
5. How much longer should we wait for them to arrive?
e. It leaves at 4:45
6. How long is the movie?
f. It’s tomorrow afternoon
7. Your meeting was shorter than expected, wasn’t it?
g. Yes, he is never late for anything
8. What time does the plane take off?
h. Next Monday will be his first day
9. When is your appointment with Dr. Kovacs?
i. About two and a half hour

2.3 Where questions :
  • Khi nghe chú ý các giới từ chỉ địa điểm như : on/in/at
  • Đôi khi câu trả lời không có giới từ chỉ địa điểm nên cần phỉa lưu ý.
E.g: Where’s your new office?
A.I’m in the cafeteria
B.On the fourth floor
C.Down the street, past the church
Luyện tập với câu hỏi :

1. Where will you spend your vacation?
a. She’s at a conference
2. He is not from Tokyo, is he?
b. It’s all the way downtown
3. Is there a bank near here?
c. Yes, there’s one right near my office
4. How far is it to the water fountain?
d. They are on your desk
5. Where do you keep the paper?
e. It’s the supply closet
6. What’s behind that door?
f. I am going skiing in the mountains
7. Is the restaurant far from here?
g. Yes, there’s one next door
8. Do you know where Janet is this week?
h. It is just at the end of the hall
9. Are there any good hotels downtown?
i. There’s some on that shelf behind this desk
10. Where did you put my message?
j. No, but he travels there often



2.4.What question

  • Chú ý xem chuyện gì xảy ra

    • Hay câu hỏi dạng :
What are you going to do…?

Example:
What are you going to tell Mr Runfeld when he calls?
A.He is going to call this afternoon
B.Ill think of something to say, so dont worry
I couldnt answer the phone.


2.5 How questions.
  • Để diễn tả 1 quá trình, một phương thức ,một hành động đang tiến hành.
Eg: How did you make the cake?
  • Chất lượng hoặc điều kiện món gì đó.
Eg: How is your soup?
  • Mức độ hoặc số lượng cái gì đó.
Eg: How fast does she eat?
2.6. Why question
  • -Why did you do…?
  • - What is the reason for…
  • - What is the cause/roots for… Chú ý vào từ, cụm từ thể hiện nguyên nhân, lý do. Nghe xem từ để hỏi là gì để xác định câu trả lời.
  • Một số lỗi khi nghe các bạn có thể mắc phải như :
  • Lỗi về câu : ta có thể nghe được là copies hoặc có thể là copied.
  • Nối âm, trong tiếng anh người ta rất hay sử dụng nối âm. Mình sẽ có 1 bài viết cụ thể về phần này.
  • Similar sound. ví dụ như walk - work. Nghe rất giống nhau.
  • Ta chú ý thêm là trả lời cho câu hỏi why. Thì có thể sử dụng những cách như sau :
  • Because + clause
  • Because of N/ V-ing
  • Due to + N/V-ing hoặc Owing to + N ( thường chỉ nguyên nhân xấu)
  • For + N/V-ing
  • Since/as + Clause : Bởi vì
  • On account of + N/V-ing
  • Thanks to N/V-ing ( thường để chỉ nguyên nhân tốt)

2.7 Câu hỏi lựa chọn :
  • Yêu cầu bạn phải chọn giữa các lựa chọn mà có liên quan tới nhau
  • Câu hỏi lựa chọn bao giờ cũng có liên từ "OR"
  • Câu hỏi lựa chọn không bảo giờ trả lời sử dụng YES/NO
  • Chú ý tới : thì của câu và Similar sound.

2.8 Statements.
  • Không chứa câu hỏi nào nhưng mà câu trả lời sẽ đáp lại câu phát biểu,
  • Những câu hỏi liên quan tới statement thường liên quan tới lời chào mời, cách sử dụng hàng ngày
  • Cần phải cân nhắc chủ để đề đưa ra câu trả lời

2.9 Yes/no question
  • Thường hỏi về ý kiến, sở thích, yêu cầu, đòi hỏi, gợi ý hay nhắc nhở
  • Thường bắt đầu bằng trợ động từ : to be, did, do , will, can, would, may..
  • Tất cả câu trả lời thường bắt đầu với Yes/No

3. Đoạn hội thoại ngắn :

  • Trong phần này, bạn sẽ được :
  • Nghe 10 đoạn hội thoại ngắn.
  • Trả lời 30 câu hỏi, 3 câu cho mỗi đoạn hội thoại.
  • Bạn có 5s giữa mỗi đoạn hội thoại để : Đọc các câu hỏi tiếp theo, và có thể chọn ngay được đáp án.

Một vài hướng dẫn:
  • Khi nghe hướng dẫn, đọc nhanh 3 câu hỏi và lựa chọn
  • Gạch chân keyword trong câu hỏi và lựa chọn
  • Chú ý tới từ, cụm từ mang tính chất chuyển đoạn.
  • Câu trả lời thường mang yếu tố san sát nhau như : over, nearly, almost, etc..
  • Cố gắng trả lời ngay các câu hỏi khi nghe.
  • Nếu không nghe được thì ta nên bỏ qua, không để đầu óc bị suy nghĩ về câu không nghe được và như thế sẽ kéo theo các câu sau cũng có thể không nghe được hoặc chọn câu trả lời không đúng..
  • Các bạn có thể chọn 1 số tài liệu dưới đây để luyện tập.

4. Short Talk ( Bài nói ngắn)

Trong phần thứ tư của phần nghe, bạn sẽ được nghe một bài độc thoại và được hỏi về đoạn độc thoại đó. Bạn cũng nên rèn luyện những chú ý tương tự như trong các phần trước nhưng cần tập trung hơn đến các chi tiết. Bạn hãy chú ý đến nội dung của bài, cố gắng đọc những câu hỏi nếu có thời gian và nghe toàn bộ bài nói trước khi chọn đáp án. Sử dụng khôn khéo khoảng thời gian của bạn hoặc thử đoán câu trả lời. Đừng gạt sang một bên hoặc làm mất những thông tin quan trọng có liên quan đến câu hỏi tiếp theo.

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by NewWpThemes | Blogger Theme by Lasantha - Premium Blogger Themes | New Blogger Themes