HTTP 실습을 통해서 이해한점

일반적으로 HTTP는 클라이언트와 서버사이에서 이루어지게 되는데 클라이언트가 서버측에 요청을 하면 서버가 응답하는 방식으로 이루어진다. 요청하는 방식에는 GET과 POST의 방식이 있는데 GET은 일반적인 형태이고 POST는 FORM을 이용한 형태이다. 예를 들면 로그인하는것을 상상하면 된다.
Wireshark를 통해서 HTTP의 요청을 POST의 방식을 사용해서 패킷 캡쳐를 해보았는데, 먼저 three-handshake 가 이루어지고 세션을 만드게 된다.그런데 요청을 하나만 할수 도 있지만 한 요청을 받는시간을 이용해서 여러개의 요청을 할수 있다. 그런데 서버측에서는 일일이 하나씩 다 잘받았다고 ack을 해주는 것이 아니라 중간 중간 하나씩 응답을 해주는 방식을 사용한다. 
RTT는 전송시간과 도착시간의 평균값을 말한다. 
9장에서 배웠듯이 데이터의 크기가 아무리 커도 window size가 작게 되면 window size에 맞는 형태로 전송해야 된다.
window XP 운영체제에서 하드디스크에서 데이터를 불러오는 단위를 클러스터라고 하는데 클러스터의 크기는 8192byte이다.
그런데 이더넷에서 보낼수 있는 데이터그램의 최대크기가 1500byte이긴한데  이더넷헤더와 TCP헤더의 총 40byte를 제거한 1460을 한번에 보낼수 있다. 그래서 8192 = 1460+1460+1460+1460+892 로 된다. 데이터 재전송 여부를 확인하는것은 똑같은 squence number가 전송됐는지 여부를 확인하면 된다.
thourgh put을 구하는 방법은 총데이터의 평균값 과 RTT/2 를 나누어주면 단위시간당 thourgh put을 구할수 있게된다.   

by PAUL87 | 2009/05/28 14:26 | TCP/IP수업을 듣고 이해한점 | 트랙백 | 덧글(0)

5월28일 수업을 듣고 11장 요약한것^^;

라우팅 : 간단하게 말해서 길을 찾아주는 것을 말한다. 통신에서는 패킷이 송신지에서 목적지 까지 전송하기 위해서 경로를 찾아가는 과정을 말한다. 라우터라는 중간장치를 사용한다.

브릿지 : 두 지점간의 데이터를 필요에 따라서 통과 시키거나 필터링 하는 기능을 제공하는 장치.즉 두개의 LAN을 연결해줘서 하나의 LAN과 같은형태로 만들어준다.

스위치 : 동일한 interface 접속 장치이다. 내부에서의 연결은 가능하나 WAN의 연결이 안된다는 단점을 가지고 있다.

라우터 : 다른 프로토콜을 사용하는 서브넷이 기존의 네트워크에 추가 된다면 인근 세그먼트로 트래픽을 보낼 때 사용하는 장치
            라우터는 내부연결도 가능하고 WAN의 연결이 가능하다는 장점을 가지고 있다.

직접 라우팅 : 2개의 인터페이스가 같은 서브넷에 있을때 에는 라우터를 거치지 않고 수신자의 MAC주소와 IP주소로 통신한다.

간접 라우팅 : 2개의 인터페이스가 다른 서브넷에 있을때 에는 라우터를 거쳐서 가고 수신자의 MAC주소는 처음에는 라우터의 MAC주소가 되고 나중에 라우터측에서 목적지로 갈때는 목적지 MAC주소를 쓰기때문에 라우터 입장에서는 직접라우팅이 된다. 그러나 송신지와 목적지 사이에서는 간접라우팅 이 이루어진다. IP주소는 목적지의 IP주소를 공통으로 사용한다.
 

by PAUL87 | 2009/05/28 14:09 | TCP/IP수업을 듣고 복습하기 | 트랙백 | 덧글(0)

5월 28일 수업을 듣고서 궁금한점

throughput을 구하는 방법은 총데이터의 평균값에 RTT/2 를 하면 구할수 있다고 배웠는데,

- goodput을 구하는 방법에 대해서 알고 싶고 정확한 의미에 대해서도  궁금합니다 .

by PAUL87 | 2009/05/28 13:59 | TCP/IP수업을 듣고 궁금한점 | 트랙백 | 덧글(0)

5월 21일(木) 수업 듣고나서 9장 요약한것^^;

-하이퍼 텍스트 : 링크정보를 가지고 있는 텍스트라고 한다.
-URL : 구조는 서비스,시스템 이름, 경로이름은 필수이고 포트번호,파일이름,변수는 필요에따라서 추가해야될수 있는것이다.
         (인터넷을 통해 접속할 수 있는 전세계의 문서들을 구분해 주는 표준규격이다.)
-HTTP의 기본 형태는 클라이언트가 서버에 요청을 하면 서버가 이에 응답하는 방식이다. 기본적인 연결은 TCP로 제공 되어지고 클라이언트가 서버로 부터 정보를 수신하면 클라이언트의 브라우저는 이를 화면에 뿌려주는 것이다.
-프락시(Proxy)
프락시는 클라이언트에게는 서버가 되고, 서버에게는 클라이언트가 되는 호스트이다.
프락시가 클라이언트로부터 요청을 받으면 프락시 캐시에 있는 정보로 답을 주거나 서버에게 요청을 받은 정보로 답을 해주게된다.
그래서 프락시를 사용하지 않는 경우에 traffic보다 프락시를 사용하면 traffic이 상대적으로 감소하게 되는것이다.

-HTTP/1.0과 HTTP/1.1의 차이

HTTP/1.0은 하나의 연결을 만들고 한번의 요청에 한번의 응답을 하면 연결을 반드시 종료하게 된다.
그래서 매번 연결을 만들게 되는것이다.
HTTP/1.1은 하나의 연결을 만들면 여러번의 요청에 대해서 하나의 연결을 만들걸 유지 시켜서 응답을 해주는 방식이다.

-HTTP 요청
GET과POST의 방법이 있다.
GET : 일반적인 웹페이지를 요청할 때 사용한다.
POST : 폼을 채워서 보낼때 사용한다.

※HTTP 캐시는 서버로의 요청을 감소 시키거나 응답을 하더라도 전체 데이터 전송의 빈도를 감소 시키는데 의의가 있다.
 또한 캐시가 의미가 있어지려면 내용이 최신의 것으로 유지 되어야된다.
만약에 캐시로 통해서 브라우저에 접속하게 되서 예전의 내용이 보여지면 현재의 내용으로 볼려면 새로고침을 하면 된다.

by PAUL87 | 2009/05/21 14:43 | TCP/IP수업을 듣고 복습하기 | 트랙백 | 덧글(1)

5월 21 (木) 수업 듣고 나서 8장 요약한것 ^^;

tcp프로토콜에 대해서 알아보기로 하자.

- tcp프로토콜은 연결지향 프로토콜이며 UDP와는 달리 신뢰성을 보장 받기 원하는 서비스에대해서 신뢰성을 보장해준다.

- tcp 기능 및 특성을 간단하게 설명하자면, 다음과 같다.
1. 연결설정 2. 일련번호 3. 수신확인 일련번호 4. 연결종료 5. 흐름제어 및 혼란제어

본격적으로 tcp헤더를 살펴보기로 하자. 간단하게 살피면 다음과 같이 헤더가 구성되어 있다.

1.TCP source port    2.TCP target port  3.source seq.# 4. Ack seq#  5.TCP header length  6.Res. 7.session flags         2byte                            2byte                  4byte             4byte                  4bit                  4bit        1byte         

8. sender window size 9. TCP check-sum  10. Urgent data size
              2byte                         2byte                      2byte

※  sirial number : 앞에 와 뒤가 연관되지 않고 차례차례이다. ex)은행업무 (대기표를 뽑고 기다리는 일)
     sequence number : 앞에 와 뒤가 연관되어 있고 차례차례이다. ex)릴레이 달리기

- 최대 세그먼트와 윈도우 크기
a의 컴퓨터와 b의 컴퓨터가 있다고 가정해보자.
a의 Maximum Segment Size 와 수신 버퍼의 크기가 MS는 1,024 이고 windows 는 192라고 가정해보자.
b의 Maximum Segment Size 와 수신 버퍼의 크기가 MS는 1,460 이고 windows 는 4,096라고 가정해보자.
b가 a에게 세그먼트를 보낼때 MS는 1,024이지만 windows 가 192라서 192의 크기로 밖에는 보지 못한다는걸 알수 있다.
a가 b에게 세그먼트를 보낼때는 MS도 1,460이고 windows도 4,096이라서 1,460 +1,460 + 1,176으로 보낼수 있다는걸 알수있다.

- hand shake

hand shake 1단계

1단계인지 구별하는 방법중 한가지 방법은 수신확인 일련번호를 확인하는것이다. 이필드의 값이 모두 0의 값들이면 송신자가 아직 그값을 모른다는 것을 나타내며 hand shake의 1단계에서만 볼 수 있다.
마지막 방법은 세션 플래그를 확인하는 것이다. 만약 세션플래그 값이 02이라고 하면 SYN플래그만 1로 되어있음을 알 수 있다. 이것도 hand shake의 1단계를 알려주는 방법이 될수 잇다.

hand shake 2단계

2단계인지 구별 하는 방법은 세션 플래그를 확인하는 것이다. 세션플래그 값이 12이라고 하면 왼쪽의 1은 ack플래그가 1이고 우측의 2는 syn플래그가 1이라는 것으로 클라이언트 측이 자신이 보내는 송신 일련번호로 동기화하길 바란다는 요청을 나타나게 해주는것이다.

hand shake 3단계
3단계인지 구별 하는 방법은 헤더가 무엇을 수신확인하고 있는지 확인하는 것이다. 바로앞의 수신된 세그먼트의 헤더를 살펴서 헤더가 2이면 지금의 헤더는 단계 3이라고 할수 있는것이다. 

hand shake 과정이 완료되면 어플리케이션은 세션을 시작한다. 

by PAUL87 | 2009/05/21 14:29 | TCP/IP수업을 듣고 복습하기 | 트랙백 | 덧글(0)

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