2009년 05월 30일
TCP 에 대해서 배워보았습니다. 역시나 복잡하더군요.. ㅠㅠ
먼저 TCP는 신뢰성있는 전송 서비스 입니다!!!! TCP는 연결설정, 일련번호, 수신확인 및 타임아웃, 연결종료,흐름제어, 혼잡제어란 기능들이 있습니다.
TCP 헤더에 대해서 알아 보았습니다. TCP헤더는 IP 헤더 뒤에 붙습니다.
TCP 헤더 처음에는 TCP 포트번호가 붙습니다. 송신자, 수신자로 2바이트씩 자리를 차지하고있구요.
다음은 송신측 일련번호가 4바이트를 차지합니다.일련번호를 사용하는것은 전송의 신뢰성을 확보하기위해서 사용합니다.
처음의 일련번호는 각 컴퓨터마다 다르다 4바이트를 랜덤으로 사용한다. 랜덤으로 사용되고 두번째 데이터는 처음 랜덤으로 나온 일련번호에 +1바이트를 한다. 일련번호는 수신확인 및 세그먼트 정렬할때 사용된다.
예를 들어주신걸로 말하면 버스가 5대가 출발하였는데 1.2.3.4.5 가 각각의 길을 통해 출발하였다.
그런데 가는길은 각자 알아서 가므로 도착하는 순서는 뒤죽박죽일 경우일것이다. 4.2.3.1.5 이런식으로 도착하면 4.2.3은 1번이 올때까지 운동장이라고 표현하셨는데... 운동장에 기다린다. 1번이 올라가면 2번이 있네 이러면서 2번이 올라가고 순서대로 올라가게 한다 그래서 수신측에서는 1.2.3.4.5로 받을수 가 있다.
다음은 수신확인 일련번호로 4바이트이다. 다음 전송 받기를 기대하는 데이터의 일련번호이다. 처음에 보낼대는 모르니 0이다.
다음 1바이트는 4비트씩 나뉜다, 앞의 4비트는 TCP의 헤더길이를 나타낸다.TCP헤더의 기본값은 5로서 20바이트이다.
뒤의 4비트는 미래를 위해서 남겨둔 것이다~~~~
다음 1바이트는 세션 플래그인데 1비트씩 다 다른 의미를 가지고 있다.
처음의 2비트는 예약이다. 안쓴다.
3번째 비트는 우선순위 비트이다. 1로 설정될경우 제일먼저 처리해야하는 의미이다.
4번째 비트는 수신확인 일련번호를 의미한다. (ACK)1이면 유효한것이고,0이면 의미없는 값이다.
5번째 비트는 푸쉬요청인데, 이 비트가 설정되면 세그먼트를 즉시 보내야한다는 의미다.
6번째 비트는 세션 강제 종료를 의미한다. 세션에 문제가 생기면 이 비트를 1로 나타내어 보내면 세션을 종료한다.
7번째 비트는 SYN번호를 의미한다. TCP연결에서 클라이언트 그리고 서버가 처음 송신하는 세그먼트에는 각자의 첫 일련번호가 들어있다. 그래서 1로 셋팅한다.수신한 측에서는 이 일련번호에 1을 더한값을 다음 세그먼트에 수신확인번호(ACK)로 보낸다.
8번째 비트는 종료데이터이다. 이비트가 1로설정될경우 종료 요청을 한것이다. 상대방이 수신확인에 1로 보내어준다 그럼 연결이 종료가 된다.
그 다음 2바이트는 윈도우 크기를 나타낸다. 데이터를 수신하여 저장 해둘수 있는 공간을 의미한다.0이 되어버리면 더이상 파일을 받을수가 없는것이다.
다음 2바이트는 검사합이다. TCP헤더와 데이터를 검사한다.
나머지는 TCP옵션들이다.처음 1바이트는 옵션 타입이고, 2번째 바이트는 옵션의 길이, 3번째 바이트는 최대 세그먼트 사이즈(MSS)를 말한다.
실습을 하였는데 , 전부다 하지 못하여서 나중에 해봐야겠다. ^^
# by 탱이~♡ | 2009/05/30 11:59 | 트랙백 | 덧글(0)