11장 예습.

11장은 라우팅에 관한 내용이다.

우선 라우팅의 기능에 대하여 보면

한 장비에서 다른 장비로 논리적 주소를 이용하여 데이터그램을 전달하는 기능이다.

이러한 라우팅은 직접 라우팅과 간접 라우팅으로 나뉘는데

직접 라우팅은 같은 네트워크 안에 있을 때에 라우터를 통하여 통신 하지 않고

바로 하는 것이며

간접 라우티은 같은 네트워크 안에 있지 않아 라우터를 통하여 다른 네트워크의

호스트와 통신 하는 것을 뜻한다.

그럼 이렇게 직접라우팅을 해야 할지 간접 라우팅을 해야할지 정해야 하는데

그것을 무엇을 보고 알 수 있을까? 바로 라우팅 테이블을 보고 하는 것이다.

음.... 결국 11장에서 설명 하는 것은 호스트가 통신을 원하는 호스트와 통신을

하기 위한 길을 알고 있는 라우팅 테이블과 그 길로 보낼 수 있는 라우팅에 대한 설명이다.

자세한건 수업시간에 들어야 겠다.

by peril | 2009/05/28 22:32 | 트랙백 | 덧글(0)

8장, 9장 복습.

8장의 내용은 TCP에 관한 내용이다.

우선 TCP는 호스트간의 데이터를 신뢰성에 기반하여 전송해 주는 프로토콜로써

통신을 할시 통신하고자 하는 호스트와 미리 연결을 하고 시작하는 연결형 프로토콜이다.

이 연결형 프로토콜은 처음에 3-way handshake라고 불리는 3단계의 시작 과정을 거쳐서

연결하며 연결 된후 신뢰성과 에러 검출등을 위하여 Sequence Number를 사용하여

데이터의 크기와 데이터의 위치를 알 수 있게 한다. 송신측과 수신측은 처음 handshake를

할때 서로의 처음 시작되는 Sequence Number(이하 일련번호)를 알려주는데 이 일련번호를

이용하여 다음에 받을 데이터의 번호를 지정할 수 있다. 그 다음에 받을 데이터에 관한 번호를

ACknowledge number(이하 ACK넘버)라고 한다.

자 그럼 TCP헤더에 대해서 알아보자. 음 이녀석은 IP헤더와 같이 20byte크기이다.

따라서 헤더안의 필드 종류가 많다. 우선 TCP이기 때문에 UDP와 마찬가지로

송 수신 포트 번호가 제일 첫번째 필드에 존재한다. 각각 2 bytes씩이라서 앞서

배운 잘알려진 포트 번호,등록된 포트 번호 등등이 충분히 들어 갈 수 있다.

그 다음의 필드는 TCP의 자랑인 신뢰성을 보장하기 위한 일련번호와

ACK넘버들이 들어간다. 요녀석들은 각각 4byte씩의 크기를 가지며

일련번호는 처음에 정할 때 랜덤하게 정해지며 데이터의 한 바이트당

1씩 증가한다. 그리고 ACK넘버는 앞서 말했듯이 다음 전송 때에 받기를

기대하는 첫째 바이트의 일련번호이다. 요 두녀석이 있어야 TCP는

신뢰성 있는 데이터 송 수신을 할 수 있는 것이다.

그 다음 필드는 TCP헤더의 길이로써 IP헤더와 마찬가지로 기본 4byte

단위이다. 기본 값은 5이며 5보다 크면 마찬가지로 옵션이 붙는다

따라서 기본 헤더 길이는 4x5= 20byte다. 그 다음 필드는 세션 플래그

필드로써 이녀석도 참 중요하다. 이 세션필드에는 여러플래그가 있는데

각설하고 중요하다 생각되는 필드만 설명하기로 한다. 

우선 유효 수신확인 필드인데 이 비트가 1이면 수신확인 필드의 

데이터가 유효하다는 뜻이다. 이 때 ACK는 데이터가 있다고 생각하지

않기 때문에 Squence number는 처음 handshake했을 때의 번호 그대로

시작한다. 그 다음은 SYN 필드인데 이니셜 넘버로 불리며 처음 handshake하여

연결시 보내는 패킷이다. 그 다음 필드는 FIN 필드로써 사용자가 더 이상의

세션이 필요하지 않다고 서버에게 알리면 서버는 종료 데이터 플래그를

1로 세팅하여 응답한다. 종료할 때에는 연결 할때와는 다르게

4-way handshake이며 처음 종료를 끝낸다고 FIN을 1로 설정하면 수신측은

알았다는 ACK넘버만 보낸다. 그리고 이때 수행중인 프로세스를 종료할

준비를 하고 송신측에서 다시 FIN을 1로 설정하여 보내면 알았다는 ACK를

보내고 종료를 하게 된다. 그다음 필드는 window size필드인데 이것은

얼마만큼의 데이터를 보내도 좋다고 지정하는 것이다.

예를 들자면 수신측에서 winddow size를 5로 설정하면 송신측은 5개의 데이터

만을 보낸후 상대방에서 ACK가 날아오기를 기다린다.

고로 지정한 만큼씩만 보내는 것이다. 그다음 필드들은 Check-sum과

Urgent data size이다 그냥 딱 봐도 오류 검출과 급한 데이터 전송 필드 인것 같다 - 3-...

그리고 9장에서는 HTTP에 관하여 배웠는데 호스트가 서버에 접속할 때 한번에 접속 하는 것이

아니라 가운데 Proxy(대리인)이 존재하여 대신 서버에 요청하여 원하는 데이터를 받게 된다.

이 Proxy가 있기 때문에 서버에 걸리는 트래픽이 적게 되고 또한 Proxy에 cache 기능이 있어

같은 내용의 요청을 바로바로 호스트에게 전송 할 수 있다.

후..되게 길다 이거.. 어쨋든 TCP와 HTTP를 배운 후에 실제로 실습을 하였다.

실습지에 게시된 홈페이지에 접속하여 3-way handshake과정을 살펴보고

전송 시각등과 세그먼트의 데이터 크기등을 확인하는 실습이었다.

뭐랄까 쫌 어렵다; 그래도 용써봐야겠다 ㅠㅠㅠ;;

by peril | 2009/05/28 22:21 | 트랙백 | 덧글(0)

7장 예습.

7장에 대해서 훓어보니

저번 시간에 실습을 하였던

DNS서버에 대한 설명과 우리가 실제 사용하는 IP주소를 받아올 때

사용하는 프로토콜에 대한 설명이 나와있었다.

그 프로토콜은 BOOTP와 DHCP.

음~우선 DNS에 대해서 보았더니 수업 시간에 배운대로

호스트가 Domain name의 IP주소를 알기 위해 로컬 네임 서버에  응답을

하는데 그 때 그 응답을 해주는 녀석인 Resolver가 등장하며 요녀석이

DNS서버에 접속하여 IP주소를 알아내면 돌아와 호스트에게 알려준다.

음 이건 수업시간에 들어서 개념은 잘 알겠다!.

자 그럼 BOOTP와 DHCP에 대해서 보자. 보아하니 요녀셕들의 역할은

IP주소의 자동구성을 하는 역할인 것 같다. 좀더 파고드니..

BOOTP는 구세대 IP 자동 구성이면 DHCP는 신세대 IP 자동 구성

프로토콜인것 같다. 그리하여~ BOOTP가  IP주소를 요청하는 형식과

DHCP가 IP주소를 요청하는 형식에 대한 내용인 것 같다.

자 나머지는 수업시간에 자세히 파고들어 보자 ~

by peril | 2009/05/23 11:59 | 트랙백 | 덧글(2)

6장 복습.

6장에 대해서 배웠다.

UDP헤더다. 예습할 때 생각했던대로

UDP는 겁나 간단하다. 

보통 UDP는 짧은 메시지를 보낼 때에 사용되는데 그 짧은 메시지를

어느 응용 프로그램에 보낼지를 알아야 하기 때문에

헤더에는 포트 번호가 들어가게 된다.

이때 송신측이 나라고 가정하고 음~..

http에 접속 한다고 해보자. 개별의 호스트는 어딘가로 접속할 때

랜덤한 포트번호를 가지게 된다. 그 범위는 49,152~65,535 중 하나인데

다이나믹 포트라고 불린다. 뭐 그렇다 실제 실습할 때에는 등록 포트 번호인

1.024~49,151중에서 하나 선택 됬지만..흠흠 이게 바로 송신측에서 최초 접속 할때

가지게 되는 포트 번호이다. 자 그럼 http로 접속 한다고 했었는데, http나 ftp DHCP등

자주 이용되는 어플리케이션은 잘 알려진 포트나 등록된 포트를 사용한다.

이 범위는 0~1,023 요러한 이유로 http도 여기에 속해서 80번의 포트 번호를 가진다.

그래서 내가 http에 접속할 때에는 아무개의 포트번호 http는 내가 접속 할때 

접속 요청을 하면 80번 포트를 이용하여 응답을 해준다. 

이러한 사실을 깔고 들어가서..

이번 시간에는 요 UDP헤더에 대해서 실습을 하였다. (최근 실습이 많다 ㅡㅜ.)

목표는 바로 DNS에 접속. 학교 홈페이지에 대한 IP주소를 알아내는 것이었는데

과연 UDP헤더를 확인하여 포트번호를 확인하니 DNS의 그것인 50번이 짠 하고 떳다.

다만 이게 무엇을 보고 질의 패킷이냐 아니면 응답 패킷이냐를 확인하는데...

그게 실습지에만 내용이 나와있어서.. 자세히는 기억이 나지 않는다..ㅜㅜ

분명히 query였던 것같다.. 요녀석이 0으로 설정되어 있다면 질의요청

반대로 1로 설정 되어 있다면 서버쪽에서의 응답을 한 패킷이란 것을 알 수 있다.

이런식으로 총 세문제 정도를 실습 하였는데. 너무 wireshark에만 의지 햇던거 같다.

교수님 말씀대로 데이터의 내용만을 보고 어떠한 패킷인지 알아 내는 연습이 많이

필요 할듯 싶다. 

 

by peril | 2009/05/20 20:21 | 트랙백 | 덧글(1)

IP헤더 실습 복습.

오늘 IP헤더에 대한 실습을 하였다.

좀더 구체적으로 말하자면. IP헤더 안에서도 단편화에 대한 실습이였다.

앞서 배웠듯이 단편화를 할 경우 신경 쓸게 여러가지가 있다.

Don't fragment라던가, More fragmnet라던가, offset, 등등이다.

요녀석들을 알아야 "아 요녀석 단편화가 됬구나" 라거나 혹은 

"요녀석 세개로 쪼개졌네?" 등등을 알 수 있다.

그 래 서 실제로 실습해봤다.

그냥 뭐 우선 당연히 송신측은 내가 되고 주어진 IP주소로 ping을 때려 

그 결과를 wireshark로 체크 하는 실습이었다.

처음에는 패킷 사이즈를 56으로 하고

그 다음에는 2000, 3500으로 맞추어서 확인해 보았다. 

56일 때는 원체 데이터 크기가 작아 그냥 56안에 쏙 들어갔기 때문인지

단편화는 눈을 씻고 찾아봐도 한 흔적이 없었다.

하지만 2000부턴 달랐다 과연.. 보통 이더넷을 통하여 통신 하기 때문인지

2000부턴 1500으로 칼같이 짤랐다. 그래도 실제 데이터의 양은 1480이다.

때문에 offset을 확인하여 '0'으로 설정된 첫 번째 단편화 패킷을 확인하고

그다음 more를 확인하여 '1'로 설정 된것을 확인한 후

두 번째 단편화를 보니 2000-1500 하고 남은 520 크기의 데이터를 갖는 패킷을

찾을 수 있었다. 그래서 요부분의 내용을 줄줄이 쓰고~ 계속 해서 송신할 때

값이 변하지 않는 녀석들과 변하는 녀석들을 구분도 하였다. 실습을 한번 쭉~

하고 나니, 이건 IP헤더에 대한 복습 같았다. 사실 저번주에 어린이날로 인하여

수업을 하루 안해 2주간의 공백이 생겨서 그런지 기억이 가물 가물 했었다;

그래도 실습을 하면서 조금씩 새록새록 기억이 났다. 참 다행이다;

by peril | 2009/05/12 21:11 | 트랙백 | 덧글(1)

◀ 이전 페이지          다음 페이지 ▶