2007년 6월 30일 토요일

사이버 영어 시험

회사에서 사이버영어를 신청해서 듣고 있다.
한달동안 진짜 억지로 출석하며 듣는둥 마는둥 했지만, 어찌됐던 한달이 다돼 시험을 보게 됐다.
시험점수가 70점이 모자를 경우 본인이 일정액을 내야하는 관계로 사뭇 긴장감이 있었다.
다행히 시험점수가 잘 나왔다 - 물론 초급의 영어회화 수업이라 수준이 떨어진다. ^^::
다음은 간단히 시험문제 내용의 요약이다.
(여기에 올리는 이유는 그냥 내가 잊지 않기 위함이다)

That is how I reach her.
‘reach’ 의 의미 중 ‘~와 연락을 취하다’가 사용되었다. 여기서 reach는 타동사로 쓰여 연락하는 대상인 ‘사람’이 목적격으로 온다

I can’t wait for a pizza.
(=I desperate for a pizza, I'm dying for a pizzza)

Would you please let me go home earlier?

Can I have your passport?

Dinner is ready to serve.

Would you like to work with us?

Can you tell me what happened to you?

You’ll need to go to smoking area.
‘You’ll need to~’는 ‘당신이 ~해야 할 겁니다’ 란 의미로 상대방에게 강하게 요구할 때 쓰는 표현이다.

What do you think of this dress?

thank someone for ~ : ~에게 사의를 표하다

내가 낼께 : I'll foot the bill (= It's my treat)
Why don't we go Dutch?

I'm here to buy some orange.
(be here to buy something ~ : ~사러 여기 왔다)

Are you going to attend the reunion?

That's because he worked till late last night?
(~까지 중에서도 till은 계속의 의미, by는 완료의 의미)

I can't belive he is no longer with us.

I think we need to~’는 ‘우린 ~해야 할 것 같은데요’

What would you like for dessert?

Can you show me how to fill out the application form?
Can you show me~?’ 에서 동사 show는 ‘~[라는 것]을 보이다, 나타내다, 설명하다’ 라는 뜻으로 쓰여
‘~ 좀 알려주실래요?’ 의미로 쓰인다.
‘~하는 방법’은 ‘how to+V’로 쓰인다.

Is it okay if I submit the proposal by tomorrow?
Is it okay if~?’는 ‘~해도 될까요?’란 뜻으로 누군가에게 어려운 부탁이나 아쉬움을 조심스럽게 말할 상황에 유용하게 쓸 수 있는 표현이다

I like talking with my friends on the phone.

2007년 6월 27일 수요일

TCP 이해

첫번째, 잃어버린 TCP확인 메세지(acknowledgement)는 재전송을 강요할 필요가 없는데 왜 그런가?

host A 과 host B 가 TCP 통신을 한다고 가정하겠습니다.
TCP 세그먼트에는 Sequence Number 와 Acknowledgment Number 라는 요소가 포함되어 있습니다.
먼저 host A가 host B에게 TCP 세션을 맺기 위해 SYN(Synchronize) 세그먼트를 전송합니다.
여기에는 임의의 Sequence Number 가 포함됩니다. 이것을 SEQ#=100 이라 가정하겠습니다.
그럼 host B는 이것에 대한 SYN(Synchronize), ACK(Acknowledgment) 세그먼트를 host A에게 전송하는데 Sequence Number 는 임의로 생성되지만 Acknowledgment Number 는 host A에게서 받은 SEQ#=100 보다 1이 증가한 101을 보내야 합니다.
이것을 SEQ#=100 , ACK#=101 이라고 가정하겠습니다.
그럼 이것을 받은 host A는 ACK#=101 이 자신이 보낸 SEQ#=100 보대 1이 증가한 것을 검사한 후 세션이 제대로 이루어졌다고 판단하게 됩니다.
ACK#=101 이 아닌 다른 number나 SYN, ACK 세그먼트를 받지 못하게 되면 통신이 제대로 수행되지 않았다고 판단하고 다시 SYN 세그먼트를 host B 에게 보내게 되는 가죠.
따라서 ACK 세그먼트의 재전송을 강요하지 않고도 세션이 이루어 졌는 지를 판단할 수 있습니다.

두번째, TCP는 연결을 설정하기 위해 두 종단간 동의가 있어야 한다. 두 종단간의 연결 설정 과정을 설명하라!

① host A SYN (SEQ#=100 CODE Bit=SYN) ===> host B
: 임의의 SEQ# 를 생성하여 host B에 전송
② host A <=== (SEQ#=200, ACK#=101 CODE Bit=SYNACK) host B
: 임의의 SEQ# 를 생성하고 host A에게 받은 SEQ#=100 에 대해 ACK#=101 를 host A에 전송
③ host A (SEQ#=101 ACK#=201 CODE Bit=ACK) ===> host B
: 임으로 생성한 SEQ#=100 의 다음 번호인 SEQ#=101 과 host B에게 받은 SEQ#=200에 대한 ACK#=201 를 host B에 전송
④ host A <=== (SEQ#=201 ACK#=102 CODE Bit=ACK) host B
: 임으로 생성한 SEQ#=200 의 다음 번호인 SEQ#=201 과 host A에게 받은 SEQ#=101에 대한 ACK#=102 를 host B에 전송

이상과 같은 4가지 과정으로 정상적인 TCP 세션이 맺어진 후에 Data 의 전송이 이루어집니다.

TCP 3-way/4-way handshaking 그림참조
3-way handshaking 데이터전송시 세션하이젝킹
TCP/IP통신프로토콜
TCP통신 차단기법을 이용한 인터넷서비스 차단

3-Way handshake

[STEP 1]
A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 되는 것이다.

[STEP 2]
B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.

[STEP 3]
A클라이언트는 B 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.

위 와 같은 방식으로 통신하는것이 신뢰성 있는연결을 맺어 준다는 TCP의3 Way handshake 방식이다.


TCP SYN Flooding 공격이란?
악의적인 공격자가 1단계(SYN)만 요청하고 B서버로부터 응답(SYN+ACK)을 받은 후 3단계, 즉 ACK을 B서버로 보내지 않는다면?
B서버는 SYN+ACK을 받은 A클라이언트로부터 응답이 올것을 기다리고 반쯤 열린 Half Open상태가 되어 대기 상태에 머무른 후 일정시간(최대 75초) 까지 다음 요청이 오지 않으면 해당 연결을 초기화 하는데, 초기화 하기 전까지 이 연결은 메모리 공간인 백로그 큐(Backlog Queue)라는 공간에 계속 쌓이게 된다.
여기서 만일 악의 적인 연결시도를 기존의 연결이 초기화되기 전에 공격자가 계속 시도하게 된다면 백로그 큐가 넘치게 (flooding)되지않겠는가...
그렇담 더 이상의 연결을 받아들일 수 없는 상태가 된다. 서비스 거부 상태에 빠지는 것이다.
백로그 큐가 가득 찼을 경우 서버의 증상은 어떻게 나타날까를 살펴보면 공격을 당한 해당 포트로만 접속이 이루어 지지 않을 뿐 다른 포트에는 영향을 주지않고, 즉 80번 포트로 이런 공격을 받게 되면 웹만 서비스 불능상태에 빠지는 것이다.
또한 서버나 네트워크에 별다른 부하도 유발하지 않고 별다른 로그단서도 없다 프로세스의 갯수나 이런 것도 특별히 특이점은 없는듯 보인다.

그렇담 SYN Flooding 공격임을 파악할 수 있는 단서는 무엇인가...
바로 netstat -na 에서 살펴볼 수 있는 State 필드의 SYN_RECV(리눅스경우) 상태의 비정상적인 증가에서 힌트를 찾을 수 있는 것이다.

TCP Segment Format

SRC PORT [16] 전송자 포트 번호
DEST PORT [16] 목적지 포트 번호
SEQ [32] 보내려 하는 데이터 스트림의 단위를 나타내는 순서 번호
ACK [32] 수신자가 보내는 응답 번호
HLEN (Header Length) [4] TCP 헤더의 길이
RESERVED [6] 예약된 필드
CODE BIT [6] 제어 비트라고 하며 6가지의 제어값을 가지며, 다음과 같은 것들이 있다.

URG (Urgent Flag) 긴급하게 처리해야 하는 데이터
ACK 응답확인 번호
PSH (Push Flag) TCP 가 받은 데이터를 바로 윗층 어플리케이션에게 보낸다.
RST (Reset Flag) TCP의 가상회선을 끊는 것을 의미
SYN (SynchronizeFlag) 시퀀스 번호를 동기화
FIN (Fin Flag) 송신쪽이 보낸 데이터가 종료 되었다는 것을 표시. 수신은 가능한 상태.
정상종료인 경우 끊기를 요청하는 쪽이 먼저 FIN을 지정한 TCP로 종료 요청을 통지한다. 받은 쪽에서는 종료 처리를 하고 FIN을 지정한 TCP헤더를 되돌려주어서 모든 처리를 종료 시킨다.

WINDOW [16] ACK에 나타난 SEQ번호에서부터 어는 정도의 데이터를 수신할 수 있는지를 알려준다
CHECKSUM [16] 송신쪽은 TCP허위 헤드를 만들어 첵섬을 계산해서 이 필드에 넣어 전송하며, 수신측에서는 다시 같은 형태의 허위헤드를 만들어 책셈을 계산한뒤 제대로 데이터가 수신되었는 확인한다.
URGENT POINTER [16] 김급 처리해야 하는 데이터가 들어 있는 데이터를 가리키는 포인로 취급된다. TCP헤드 뒤에 추가된 데이터의 앞부분(송신용 순서 번호를 나나태는 장고)으로부터 이 긴급포인터에 나타나 수치 만큼의 바이트가 데이테로 처리된다.
OPTION [유동] 통신의 세부 사항을 조정하기 위해 사용된다. 일반적으로 거의 사용하지 않으며 전체길이가 32비트의 배수가 되도록 지정해야 한다.
DATA [유동] 실제 데이터

2007년 6월 12일 화요일

2000안타 양준혁 “나를 키운 8할은 변화”

2007년 6월9일. 한국프로야구도 전설적인 기록이라 일컬어지는 개인통산 2000안타 선수를 갖게 됐다. 주인공은 불혹을 바라보는 삼성 양준혁. 잠실 두산전 9회 이승학으로부터 2000번째 안타를 뽑아냈고, 1루에 서서 두 손을 번쩍 들었다. 한국나이로 서른아홉, 노총각 양준혁의 눈시울은 조금 붉어졌다. 양준혁은 지난해까지 14년 동안 매년 평균 139개의 안타를 때려냈다. 최다안타 순위로 매년 5위권에 해당하는 성적이다. 아파도 안되고 슬럼프도 안된다.

양준혁은 “나를 키운 건 8할이 ‘변화’다”라고 힘줘 말했다. 올시즌까지 프로에서만 15년. 물론 위기도 있었고 부진한 적도 있었다. 그때마다 양준혁은 이전의 ‘나’를 버렸고 새로운 ‘나’를 찾았다

양준혁 선수는 “나이가 들수록 변화에 대한 두려움이 커진다. 나이 마흔을 불혹이라고 하지 않는가. 그런데, 그게 아니다. 바뀌어야 살고, 변화해야 산다”고 말했습니다. “요즘 후배들은 변화를 너무 두려워한다. 그러나 변화를 두려워하면 아무것도 이룰 수 없다”고도 했습니다.

양준혁 선수의 말대로, 변화를 두려워하면 아무것도 이룰 수 없습니다.

2007년 6월 1일 금요일

[예병일의 경제노트] 고현숙의 '유쾌하게 자극하라' 중에서

퇴근 후 집에 들어설 때 자녀들이 현관으로 나와서 반갑게 맞아주길 바라는 가장이 있었다. 일터에서 열심히 일하고 집으로 돌아오는 가장이 그런 정도의 환영은 받아야 하지 않겠는가 내심 생각해왔다.
그런데 그게 아니었다. 몇 번이나 말했는데도 중고생인 아이들은 공부를 핑계로 자기 방에 들어앉아 건성으로 인사 시늉만 했다.

그는 잔소리를 하는 대신 자신이 먼저 바꿔보기로 했다. 아이들이 집에 들어올 때는 TV를 보거나 책을 읽다가도 얼른 일어나 현관으로 나가 반갑게 맞아주었다. 아내가 외출할 때도 일부러 현관까지 가서 웃는 얼굴로 배웅하였다.
이렇게 한 달 정도 의식적으로 노력했더니 과연 변화가 일어났다. 자신이 들어올 때면 가족들이 어김없이 현관에 나와 인사를 하더라는 것이다. 집안의 분위기도 훨씬 좋아진 것은 물론이다.

고현숙의 '유쾌하게 자극하라' 중에서 (올림, 51p)

아이는 어른의 거울

이걸 보면서 어찌나 웃었는지...
이게 바로 나의 모습이 아닌가... :-)
2007/06/01일자 한겨레신문의 비빔툰에서 슬쩍 가져왔습니다.



세상의 작은것을 놓치지 않는 정보통님을 존경합니다.