5월13일 복습내용

TCP의 선택
* 신뢰성있는 전송서비스
    - IP는 데이터그램별로 전송에 최선을 다함
    - TCP는IP가 가지고 있지 않는 이런 기능들을 제공함

* TCP의 기능 및 특성
    - 연결설정: 3-way(3단계) 핸드셰이크
    - 일련번호: 데이터크기 및 송수신할 데이터의 위치를 알림
    - 수신확인 및 타임아웃: 오류/분실 데이터의 재전송을 가능하게 함
    - 연결종료:4-way(4단계) 연결종료절차
    - 흐름제어: 통신상대방의 처리능력에 맞춘 유연한 전송성능 보장
    - 혼잡제어: 네트워크에서 발생하는 혼잡에 대응하는 전송 가능

*TCP의 헤더
    - 신뢰성있는 전송을 하기 위해서 여러가지 기술들이 도입되었기 때문에 UDP보다 매우 복잡한 모습을 보익 있다.

*송신자 포트와 수신자 포트

    - 첫 필드는 송신자 포트와 수신자 포트이다.
    - 송신자 포트와 수신자 포트는 UDP의 경우와 같은 개념이다.

*송신측 일련번호

    - 전송의 신뢰성을 확보하기 위해 일련번호 사용
    - 3단계로 이루어지는 TCP연결의 첫 단계는 클라이언트가 서버에게 일련번호를 보내는 것이다.
    - 첫 일련번호를 정하는 방법은 시스템마다 다르다.
    - 첫 일련번호 후 일련번호는 데이터 한 바이트당 1씩 증가한다.
    - 일련번호는 수신확인 및 수신 세그먼트 순서정렬 등에 사용된다.

*수신확인 일련번호

    - 다음 전송에 받기를 기대하는 데이터의 일련번호
    - 3단계로 이루어지는 TCP연결의 첫 단계에서는 서버가 보낼 데이터의 첫 일련번호를 알지 못하므로 0으로 설정한다.

*TCP헤더 길이

    - TCP헤더길이를 나타내는 4비트의 필드
    - 헤더의 크기를 4바이트 단위로 표현
    - 기본값은 5이다.
    - 다음 4비트는 향후 사용을 위해 예약된 것이다.

*세션 플래그

    - 처음 2비트는 예약, 나머지 6비트가 세션 플래그이다.
    - 각 비트마다 고유의 기능을 가지고 있다.

*세션 플래기 - 긴급 포인터

    - 이 비트가 1이면 그 세그먼트는 긴급데이터
    - 그 세그먼트를 우선적으로 처리되야 한다는 의미

*세션 플래그 - 수신확인 유효비트

    - 이 비트가 1이면 수신확인 일련번호가 유효하다는 의미
    - 수신확인 일련번호가 의미없는 값이라면 이 비트는 0이어야 한다.

*세션 플래그 - 푸쉬 요청

    - 이 비트가 1이면 버퍼가 찰 때까지 기다리지 말고 데이터를 즉시 전달하라고 요구하는 것임
    - Telnet 등 짧은 데이터이지만 즉시 보내야 하는 경우에 1로 세팅함

*세션 플래그 - 세션 강제 종료

    - 문제가 생겨서 세션을 계속 유지하지 못 할 경우에 이 비트를 1로 하여 상대에게 전송한다.
    - 상대는 세션을 종료하게 된다.

*세션 플래그 - 일련번호 동기화

    - TCP연결을 시작할 때는 서로 상대방의 첫 일련번호를 알아야 한다. 이를 일련번호의 동기화라고 한다.
    - 따라서 TCP연결에서 클라이언트 그리고 서버가 처음 송신하는 세그먼트에는 각자의 첫 일련번호가 들어있으며, 따라서 이 비트는 1로세팅된다.
    - 이를 수신한 측은 이 일련번호에 1을 더한 값을 다음 세그먼트의 수신확인 일련번호로 하여 전송하다.

*세션 플래그 - 종료 데이터

    - 종료 플래그를 1로 하여 송신하면 상대방에게 세션의 종료절차에 들어가자고 요청하는 것이다.
    - 상대는 종료요청에 대한 수신확인을 보낸다.
    - 상대는 종료 플래그를 1로 하여 송신한다.
    - 이를 수신하면 이에 대한 ACK를 보내고 연결이 종료된다.

*송신측 윈도우 크기

    - 수신 확인을 기다리지 않고 전송할 수 있는 데이터의 크기
    - 즉, 데이터를 수신하여 저장해 둘 수 있는 버퍼크기를 의미
    - 이 필드의 값이 0x1000이라는 것은 이 세그먼트를 보낸 측에 4096바이트의 사용 가능한 버퍼용량이 있다는 의미
    - 이 필드의 값이 0이면 더 이상의 수신이 불가능하다.

*TCP검사합

    - TCP헤더 필드와 전송되는 데이터에 대해 검사를 수행

*옵션필드

    - IP의 경우와 같이 TCP도 헤더길이필드 값이 5보다 크면 옵션이 존재하다.
    - 헤더길이필드의 값이 6일 경우는 4바이트의 옵션필드가 존재함을 알 수 있다.

*최대 세그먼트 크기와 윈도우 크기

    - 전송하는 세그먼트의 크기는 수신측의 윈도우 크기보다 클 수 없다.
    - 또한 각 TCP장치에 설정된 MSS를 초과할 수 없다.
    - MSS = 최대 세그먼트 크기 = Maximum Segment Size = 한 세그먼트에 담아 보낼 수 있는 데이터의 최대 크기
    - 한마디로, 전송하는 세그먼트의 최대크기는 MSS와 윈도우 크기 중 최소값이 된다.

*핸드셰이크 - 그 3단계중 1단계(클라이언트-->서버)

    - ACK 일련번호 값이 0
    - 세션플래그필드의 값이 0x02
    - 대개 헤더길이필드는 0x6, 옵션에서 MSS를 알려 줌
    - MSS를 알려주지 않으면 기본값은 536바이트

*핸드셰이크 - 그 3단계중 2단계(서버-->클라이언트)

    - ACK 번호 값이 1단계 일련번호+1
    - 세션플래그필드의 값이 0x12
    - 대개 헤더길이필드는 0x6, 옵션에서 MSS를 알려 줌
    - MSS를 알려주지 않으면 기본값은 536바이트

*핸드셰이크 - 그 3단계중 3단계(클라이언트-->서버)

    - ACK 번호 값이 2단계 일련번호+1
    - 일련번호 값은 1단계 일련번호+1
    - 핸드셰이크3단계라는 특징적인 값은 없음

*혼잡 TCP

    - 혼잡은 수용능력 이상의 데이터를 수신하였을 때 발생하는 장애상태이다.
    - TCP는 혼잡이 발생했을 때 대응하는 여러 기능을 가지고 있다.

<질문>
버퍼의 역할은 단순히 수신된 데이터를 임시 저장하는 것 인가요? 
버퍼가 왜 꼭 필요한 것인지 잘 모르겠습니다.
그냥 수신측에서 바로 받으면 어떤 문제가 생기는 건가요?
 










이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 곰탱이 | 2008/05/13 21:36 | 학습블로그(20042117 조성진) | 트랙백 | 덧글(1)

트랙백 주소 : http://du1god.egloos.com/tb/338277
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/05/19 23:49
내용을 강의자료에 있는대로 그대로 쓰는 것보다는 자기가 이해한 내용을 자기의 말로 기술하는 것이 바람직합니다.

버퍼에 대해서는 수업중에 설명을 했습니다만...임시저장하는 거 맞습니다. 물건 10개를 A에서 B로 옮긴다고 합시다(TCP는 데이터를 상위프로토콜로 전달해야 하죠). 이 10개의 물건들을 하나 하나 옮기는 것이 효율이 좋을까요, 아니면 10개를 한꺼번에 옮기는 것이 좋을까요? 이제 버퍼의 효과를 아시겠습니까?

:         :

:

비공개 덧글

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