620 likes | 1.05k Views
제 12 장 전송 제어 프로토콜( TCP). 12.1 프로세스간 통신 12.2 TCP 서비스 12 .3 세그먼트 12 .4 옵션 12.5 검사합 12 .6 흐름 제어 12.7 오류 제어. 제 12 장 전송 제어 프로토콜( TCP)( 계속). 12.8 TCP 타이머 12.9 연결 12 .10 상태 천이 다이어그램 12 .11 혼잡 제어 12.12 TCP 동작 12 .13 TCP 설계 12.14 요약. TCP/IP 프로토콜 모음. 전송 계층( TCP) 이 제공하는 기능.
E N D
제 12 장 전송 제어 프로토콜(TCP) 12.1 프로세스간 통신 12.2 TCP 서비스 12.3 세그먼트 12.4 옵션 12.5 검사합 12.6 흐름 제어 12.7 오류 제어
제 12 장 전송 제어 프로토콜(TCP)(계속) 12.8 TCP 타이머 12.9 연결 12.10 상태 천이 다이어그램 12.11 혼잡 제어 12.12 TCP 동작 12.13 TCP 설계 12.14 요약
전송 계층(TCP)이 제공하는 기능 • 프로세스간 통신 개설(포트 번호 이용) • 전송 단계에서 흐름 제어 메커니즘 제공(슬라이딩 윈도우 프로토콜 이용) • 전송 단계에서 오류 제어 메커니즘 제공(응답 패킷, 시간-초과, 재전송 방식 이용) • 연결 지향의 신뢰성 있는 프로토콜
12.1 프로세스간 통신(계속) • 클라이언트/서버 통신에 필요한 사항 • 로컬 클라이언트 프로그램 • 원격 서버 프로그램 • 로컬 호스트 • 원격 호스트 포트번호 IP주소
12.1 프로세스간 통신(계속) • 포트 번호
12.1 프로세스간 통신(계속) • 잘 알려진(well-known) 포트 번호 Port Protocol ----- ----------- 7 Echo 9 Discard 11 Users 13 Daytime 17 Quote 19 Chargen 20 FTP, Data 21 FTP, Control
12.1 프로세스간 통신(계속) • 잘 알려진(well-known) 포트 번호(계속) Port Protocol ----- ----------- 23 TELNET 25 SMTP 53 DNS 67 BOOTP 79 Finger 80 HTTP 111 RPC
12.1 프로세스간 통신(계속) • 소켓 주소 • IP 주소와 포트 번호의 조합 • 종단간 연결 설정에 사용 • 클라이언트와 서버 소켓 주소 필요 • IP 헤더(IP 주소)와 TCP 헤더(포트 번호)에 들어있음
12.2 TCP 서비스 • 스트림 데이터 서비스 • 전이중 서비스 • 신뢰성 서비스
12.2 TCP 서비스(계속) • 스트림 데이터 서비스 • 송신 TCP • 송신 응용 프로그램으로부터 문자 스트림 수신(송신 버퍼 이용) • 적절한 크기인 세그먼트를 만들어 네트워크를 통하여 전송 • 수신 TCP • 세그먼트를 수신(수신 버퍼 이용) • 데이터를 추출하여 문자 스트림으로 수신 응용 프로그램에 전달
12.2 TCP 서비스(계속) • 전이중 서비스 • 동시에 양방향 전송 • 송신 데이터와 수신 데이터에 대한 확인 응답을 함께 보내는 피기백킹(piggybacking) • 신뢰성 서비스 • 확인 응답 메커니즘 이용
12.3 세그먼트 • TCP를 이용하여 두 개의 장치간에 전달되는 데이터 단위
12.3 세그먼트(계속) • 세그먼트 • 발신지 포트 번호(source port address) : 전송 호스트 응용 프로그램의 포트 번호 • 목적지 포트 번호(destination port address) : 수신 호스트 응용 프로그램의 포트 번호 • 순서 번호(sequence number) : 세그먼트에 포함된 데이터의 첫번째 바이트에 부여된 번호 • 확인 응답 번호(acknowledgement number) : 상대방 노드로부터 수신하고자 하는 바이트의 번호 • 헤더길이(header length) : TCP 헤더 길이의 4바이트 워드 값 • 제어(control) : 제어 또는 플래그
12.3 세그먼트(계속) • 제어 필드
12.3 세그먼트(계속) • 제어 필드의 플래그 종류 Flag Description ----- -------------- URG Urgent pointer field is valid ACK Acknowledgment field is valid PSH Push the data RST Connection must be reset SYN Synchronize sequence numbers FIN Terminate the connection
12.3 세그먼트(계속) • 세그먼트(계속) • 윈도우 크기(window size) : 상대방이 유지해야 하는 바이트 단위의 윈도우 크기 • 검사합(checksum) : 오류 제어 • 긴급 포인터(urgent pointer) : 긴급 데이터 • 옵션(option) : 옵션 정보
12.4 옵션(option) • 최대 40 바이트
12.4 옵션(option)(계속) • 옵션-끝(end of option) • 맨 끝에 패딩을 위해 사용되는 한 바이트 옵션
12.4 옵션(option)(계속) • 무 동작(no operation) • 채우기(filler)로 사용되는 한 바이트 옵션
12.4 옵션(option)(계속) • 최대 세그먼트 크기(maximum segment size : MSS) • 목적지에서 수신할 수 있는 데이터 세그먼트의 최대 크기 • 연결 설정 단계 중에 목적지에 의해 결정
12.4 옵션(option)(계속) • 윈도우 확장 인자 • 윈도우 크기를 증가시키기 위해 사용 • 새로운 윈도우 크기 = 헤더에서 정의된 윈도우 크기 * 2윈도우 확장인자 • 최대 설정 값 : 16 • 최대 윈도우 크기 : 216 * 216 = 232(순서번호 값과 동일)
12.4 옵션(option)(계속) • 타임스탬프(timestamp) • 10바이트 길이 옵션 • 왕복 시간(round-trip time) 계산에 사용
12.5 검사합 • UDP와 동일하며 필수 사항(mandatory) • 의사 헤더(pseudoheader)를 세그먼트에 추가 • 프로토콜의 값 : 6
12.6 흐름 제어(flow control) • 목적지로부터 확인 응답을 수신하기 전에 발신지가 전송할 수 있는 데이터 양 정의 • 적용 방법 : 슬라이딩 윈도우 프로토콜(sliding window protocol) • 슬라이딩 윈도우 예(고정 크기)
12.6 흐름 제어(flow control)(계속) • 포인터를 이용한 슬라이딩 윈도우
12.6 흐름 제어(flow control)(계속) • 윈도우 크기 증가 • 확인 응답 세그먼트 이용
12.6 흐름 제어(flow control)(계속) • 윈도우 크기 감소
12.6 흐름 제어(flow control)(계속) • 윈도우 관리 • 목적지에서 증가 또는 감소
12.6 흐름 제어(flow control)(계속) • silly 윈도우 신드롬 • 전송/수신 응용 프로그램이 데이터를 천천히 생성하거나 천천히 처리할 때 발생 • 예 : 1 바이트 데이터 + 20 바이트 TCP 헤더 + 20 바이트 IP 헤더 • 송신측에서 발생하는 신드롬 • 가능한 한 바이트 데이터를 전송하지 못하게 함 • 데이터를 취합하여 큰 블록 데이터로 만들어 전송 • Nagle 알고리즘 적용 : 송신 TCP에서 실행하는 알고리즘
12.6 흐름 제어(flow control)(계속) • 수신측에서 발생하는 신드롬 • silly 윈도우 신드롬이 발생하는 상황에서 한 바이트 수신 처리 후에 윈도우 크기를 통보하게 되는 경우 • Clark 해결 방법 : 충분한 공간이 생기거나 적어도 버퍼가 반 이상 비어있을 때까지 윈도우 크기를 0 으로 통일 • 확인 응답 송신 지연 : 수신 버퍼가 충분한 공간이 생길 때까지 확인 응답 보류
12.7 오류 제어 • 오류 감지 메커니즘 • 훼손 세그먼트 • 손실 세그먼트 • 순서가 어긋난 세그먼트 • 중복 세그먼트 • 오류 정정 메커니즘
12.7 오류 제어(계속) • 오류 발견과 정정 • 오류 발견 도구 : 검사합, 확인응답, 시간-초과 • 세그먼트의 검사합 필드 이용 훼손 여부 확인 • 수신을 송신측에 알려주는 확인응답 이용 • 시간-초과 전까지 확인응답 되지 않으면 훼손 또는 손실 간주 • 오류 정정 : 시간-초과 카운터 이용 - 재전송
12.7 오류 제어(계속) • 훼손 세그먼트
12.7 오류 제어(계속) • 손실 세그먼트
12.7 오류 제어(계속) • 확인응답 손실
12.7 오류 제어(계속) • 중복 세그먼트 • 시간-초과 이전에 확인응답이 도착하지 않는 송신 • 같은 순서번호를 가진 세그먼트는 폐기 • 순서가 잘못된 세그먼트 • 데이터그램의 서로 다른 경로를 통한 전달로 인하여 발생 • 이전의 세그먼트로 모두 수신하기까지 확인응답을 전송하지 않음 • 시간-초과가 발생하면 세그먼트가 재전송 됨
12.8 TCP 타이머 • TCP 타이머 종류
12.8 TCP 타이머(계속) • 재전송 타이머(retransmission timer) • 재전송 시간 : 세그먼트 전송 후 확인응답을 기다리는 시간 • 타이머가 끝나기 전 확인응답이 수신되며 타이머 소멸 • 확인응답이 수신되기 전 타이머가 종료되면 해당 세그먼트는 재전송되고 타이머 초기화 • 재전송 시간 = 2 * RTT(round-trip time)
12.8 TCP 타이머(계속) • Karn 알고리즘 • 전송된 세그먼트에 대해 확인 응답되지 않아 재전송된 경우 • 이전 세그먼트에 대한 확인응답인지 재전송에 대한 확인응답인지 여부 판단이 애매하다 • RTT 값은 재전송 없이 확인응답 수신 전까지 변동이 없음 • 영속 타이머(persistence timer) • 윈도우 크기가 0 인 경우를 처리하기 위한 타이머 • 수신 TCP가 윈도우 크기 0 을 통보했는데, 송신 TCP가 이에 대한 확인응답을 보냈지만 수신 TCP가 이를 수신하지 못함 • 양쪽 TCP가 서로 기대되는 교착상태(deadlock) 해결
12.8 TCP 타이머(계속) • Keepalive 타이머 • 두 TCP 간에 설정된 연결이 오랫동안 휴지(idle) 상태에 있는 것을 방지하기 위한 타이머 • 시간-종료 : 2 시간 • 2 시간이 지나도록 세그먼트를 수신하지 못하면 75초 간격으로 10 개의 프루브(probe) 전송 • 응답이 없으면 다운으로 간주하고 연결 종료 • 시간-대기 타이머(time-waited timer) • 연결 종료 동안에 사용
12.9 연결 • TCP : 연결-지향 프로토콜 • 발신지와 목적지 간에 가상 경로 설정 • 연결 설정과 연결 종료를 통하여 이루어짐
12.9 연결(계속) • 연결 설정 • 4 단계 수행 • 호스트 A는 호스트 B에게 연결 설정 세그먼트를 전송(초기화 정보) • 호스트 B는 호스트 A에게 확인응답 세그먼트 전송 • 호스트 B는 호스트 A에게 초기화 정보 세그먼트 전송 • 호스트 A는 호스트 B에게 확인응답 세그먼트 전송
12.9 연결(계속) • 3 단계 핸드쉐이크(three-wayhandshaking
12.9 연결(계속) • 연결 종료 • 호스트 A는 연결 종료를 알리고 세그먼트 전송 • 호스트 B는 A의 요구에 대해 확인 응답하는 세그먼트 전송 • 호스트 B는 연결 종료를 알리는 세그먼트 전송 • 호스트 A는 B의 요구에 대해 확인응답
12.9 연결(계속) • 4 단계 핸드쉐이크(four-wayhandshaking)
12.10 상대 천이 다이어그램 • 유한 상태 기기(finite state machine) 이용 구현 • TCP 상태 State Description ----- -------------- CLOSED There is no connection LISTEN The server is waiting for calls from the client SYN-SENT A connection request is sent; waiting for acknowledgment SYN-RCVD A connection request is received ESTABLISHED Connection is established FIN-WAIT-1 The application has requested the closing of the connection FIN-WAIT-2 The other side has accepted the closing of the connection CLOSING Both sides have decided to close simultaneously TIME-WAIT Waiting for retransmitted segments to die CLOSE-WAIT The server is waiting for the application to close LAST-ACK The server is waiting for the last acknowledgment
12.10 상대 천이 다이어그램(계속) • 상대 천이 다이어그램
12.10 상대 천이 다이어그램(계속) • 상태 천이 다이어그램 • 상태(state) : 타원형 • 한 상태에서 다른 상태로의 천이 : 지시선 • 사선으로 나누어지는 두 개의 문자열 • 첫번째 열 : TCP가 수신하는 입력 • 두번째 열 : TCP가 전송하는 출력 • 점선 : 서버 • 실선 : 클라이언트 • 가는선 : 비 정상적인 상황