Presentation is loading. Please wait.

Presentation is loading. Please wait.

22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜

Similar presentations


Presentation on theme: "22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜"— Presentation transcript:

1 22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜
22.3 전송 제어 프로토콜 22.4 요약

2 22.1 프로세스간 전달 클라이언트-서버 실례 주소 지정 다중화 및 역다중화 비연결 대 연결 지향 서비스 신뢰성 대 비신뢰성

3 프로세스간 전달(계속) 데이터 링크 계층 네트워크 계층 노드 대 노드 전달 호스트 대 호스트 전달
전송층은 프로세스간 전달을 책임진다.

4 프로세스간 전달(계속) 데이터 전달 형태

5 프로세스간 전달(계속) 클라이언트-서버 실례 통신을 위해 정의되어야 할 사항 로컬 호스트 로컬 프로세스 원격지 호스트
원격지 프로세스

6 프로세스간 전달(계속) 주소 지정 데이터링크 계층에서는 MAC 주소가 필요 네트워크 계층에서는 IP 주소가 필요
전송층에서는 포트 번호가 필요 인터넷 모델 포트 번호 : 0 ~65,535인 16비트 정수 임시포트 번호(ephemeral port number) 클라이언트 호스트에서 동작 중인 전송층 소프트웨어에 의해 임의로 선택한 포트 번호 잘 알려진 포트 번호(well-known port number)

7 프로세스간 전달(계속) 주소 지정 포트 번호

8 프로세스간 전달(계속) 주소 지정 IP 주소와 포트 번호

9 프로세스간 전달(계속) IANA 범위 Internet Assigned Number Authority 잘 알려진 포트
0 ~ 1,023 사이의 번호 IANA 에 의해 통제 등록(registered) 포트 1,024 ~ 49,151 의 범위 IANA에 의해 할당 또는 통제 받지 않음 동적(dynamic) 포트 49,152 ~ 65,535 범위 통제 되지 않으며 등록 되지 않음 임시포트라고도 함

10 프로세스간 전달(계속) IANA 범위

11 프로세스간 전달(계속) 소켓 주소 IP 주소와 포트 번호의 조합
전송층 프로토콜은 한쌍의 클라이언트 소켓 주소와 서버 소켓 주소의 소켓 주소들을 필요

12 프로세스간 전달(계속) 다중화 및 역다중화 다중화 역다중화 다수의 프로세스와 하나의 전송층 프로토콜(UDP 또는 TCP)
수신측에서의 일 대 다의 관계 전송층은 네트워크 층으로부터 데이터그램을 수신 오류 검사와 헤더를 제거 후 포트 번호에 근거하여 적절한 프로세스에 전달

13 프로세스간 전달(계속) 다중화 및 역다중화

14 프로세스간 전달(계속) 비연결 대 연결 지향 서비스 비연결 서비스 연결 지향 서비스
패킷이 연결 설정이나 연결 해제의 필요없이 전송 패킷들은 번호가 부여되지 않음 패킷의 지연 또는 손실, 순서 바뀜 발생 가능 확인 응답 없음 인터넷 모델에서의 UDP 연결 지향 서비스 연결 설정 연결 종료

15 프로세스간 전달(계속) 연결 설정

16 프로세스간 전달(계속) 연결 종료

17 프로세스간 전달(계속) 신뢰성 대 비신뢰성 신뢰성 비신뢰성
전송층에서는 흐름 제어와 오류 제어를 구현하여 신뢰성 있는 전송층 프로토콜을 사용 느리고 복잡한 서비스 제공 비신뢰성 응용 프로그램이 자신의 흐름 제어와 오류 제어 기법을 가진 경우 빠른 서비스가 필요하거나 서비스 특성상 흐름 제어 및 오류 제어가 불필요할 경우(실시간 응용) 사용

18 프로세스간 전달(계속) 오류 제어

19 22.2 사용자 데이터그램 프로토콜 UDP는 흐름 및 오류 제어가 없는 비연결이고 신뢰성이 없는 프로토콜이다. UDP는 응용층으로부터 데이터를 다중화하기 위하여 포트 번호를 사용한다.

20 사용자 데이터그램 프로토콜(계속) 포트 번호 Port Protocol Description 7 Echo
    7 Echo Echoes a received datagram back to the sender     9 Discard Discards any datagram that is received   11 Users Active users   13 Daytime Returns the date and the time   17 Quote Returns a quote of the day   19 Chargen Returns a string of characters   53 Nameserver Domain Name Service   67 Bootps Server port to download bootstrap information   68 Bootpc Client port to download bootstrap information   69 TFTP Trivial File Transfer Protocol 111 RPC Remote Procedure Call 123 NTP Network Time Protocol 161 SNMP Simple Network Management Protocol 162 Simple Network Management Protocol (trap)

21 사용자 데이터그램 프로토콜(계속) 사용자 데이터그램 고정된 8 바이트 헤더를 포함

22 사용자 데이터그램 프로토콜(계속) 필드의 구성 발신지 포트 번호(source port number)
발신지 호스트에서 동작 중인 프로세스에 의해 사용되는 포트 번호 16비트의 길이(0~65,535) 목적지 포트 번호(destination port number) 목적지 호스트에서 동작 중인 프로세스에 의해 사용되는 포트 번호 16비트 길이(length) 사용자 데이터그램의 총 길이를 정의하는 16비트 필드 0~ 65,535 바이트를 정의 가능 검사합(checksum) 전체 사용자 데이터그램(헤더 및 데이터)에 있는 오류 검출을 위해 사용 검사합이 계산되지 않을 시 0으로 채워짐

23 사용자 데이터그램 프로토콜(계속) 응용 UDP의 사용 용도
흐름 및 오류 제어를 하지 않는 간단한 요청-응답 통신을 요구하는 프로세서 내부 흐름 및 오류 제어 기법을 가진 프로세스 멀티캐스팅을 위한 적당한 전송 프로토콜 라우팅 정보 프로토콜과 같은 경로 갱신 프로토콜을 위하여 사용 실시간 전송 프로토콜(RTP)과 함께 사용

24 UDP는 흐름 및 오류 제어를 제공하는 응용들을 위한 편리한 전송층 프로토콜이다. 멀티미디어 응용에 또한 사용된다.
사용자 데이터그램 프로토콜(계속) 응용 UDP는 흐름 및 오류 제어를 제공하는 응용들을 위한 편리한 전송층 프로토콜이다. 멀티미디어 응용에 또한 사용된다.

25 22.3 전송 제어 프로토콜 전송 제어 프로토콜(TCP:Transmission Control Protocol)
스트림 연결 지향(stream connection-oriented) 신뢰성 있는 전송 프로토콜

26 전송 제어 프로토콜(계속) TCP에서 사용하는 잘 알려진 포트들 Port Protocol Description 7 Echo
   7 Echo Echoes a received datagram back to the sender     9 Discard Discards any datagram that is received   11 Users Active users   13 Daytime Returns the date and the time   17 Quote Returns a quote of the day   19 Chargen Returns a string of characters   20 FTP, Data File Transfer Protocol (data connection)   21 FTP, Control File Transfer Protocol (control connection)   23 TELNET Terminal Network   25 SMTP Simple Mail Transfer Protocol   53 DNS Domain Name Server   67 BOOTP Bootstrap Protocol   79 Finger   80 HTTP Hypertext Transfer Protocol 111 RPC Remote Procedure Call

27 전송 제어 프로토콜(계속) TCP 서비스 스트림 전송 서비스(Stream Delivery Service)
UDP는 UDP 사이에 어떤 연결 없이 독립적으로 각 뭉치의 데이터를 다룸 TCP에서는 바이트의 흐름(stream of byte)로 데이터를 송/수신

28 전송 제어 프로토콜(계속) 스트림 전달

29 전송 제어 프로토콜(계속) 송신과 수신 버퍼 송/수신 프로세스가 똑같은 속도로 데이터를 만들고 처리할 수 없기 때문에 버퍼가 필요 송신 및 수신 버퍼를 사용

30 전송 제어 프로토콜(계속) 송신과 수신 버퍼 colors Sending site Receiving site 흰색
송신 프로세스에 의해 채워질 수 있는 비어있는 위치 네트워크로부터 수신된 바이트에 의해 채워질 비어있는 위치 회색 송신되었으나 아직 확인 응답을 받지 못한 바이트 - 초록색 송신될 바이트 수신된 바이트

31 전송 제어 프로토콜(계속) 바이트와 세그먼트 세그먼트라고 하는 패킷으로 다수의 바이트를 묶어서 그룹화
각 세그먼트에 헤더를 붙이고 전송을 위해 IP 계층으로 전달 세그먼트들은 IP 데이터그램으로 캡슐화되고 전송

32 전송 제어 프로토콜(계속) TCP 세그먼트

33 전송 제어 프로토콜(계속) 전이중 서비스 연결 지향 서비스 데이터가 동시에 양 방향으로 전달 가능
TCP 세그먼트는 IP 데이터그램으로 캡슐화 패킷의 순서가 뒤바뀌거나 손실 및 손상될 수 있으며 이런 경우 재전송

34 각 연결에서 전송되고 있는 데이터 바이트는 TCP에 의해 번호가 매겨지며, 번호 부여는 임의로 생성된 번호로 시작한다.
전송 제어 프로토콜(계속) 신뢰성 있는 서비스 확인 응답 기법 사용 바이트의 번호 지정 0~ 232-1사이의 임의의 번호 흐름 및 오류 제어에 사용 각 연결에서 전송되고 있는 데이터 바이트는 TCP에 의해 번호가 매겨지며, 번호 부여는 임의로 생성된 번호로 시작한다.

35 전송 제어 프로토콜(계속) 순서번호 각 세그먼트의 순서번호는 해당 세그먼트에서 운반하는 첫번째 바이트 번호

36 전송 제어 프로토콜(계속) 예제1 풀이 TCP 연결이 6,000바이트의 파일을 전송하고 있다고 가정하라.
첫 번째 바이트는 10,010으로 번호가 부여되어 있다. 데이터가 첫 번째 네 개의 세그먼트는 1,000바이트를, 나머지 세그먼트는 2,000바이트를 운반하는 것을 가진 다섯 개의 세그먼트에서 전 송된다면 각 세그먼트에 대한 순서번호는 무엇인가? 각 세그먼트에 대한 순서번호는 다음과 같다. 세그먼트 1 순서번호 : 10,010(범위 :10,010 ~ 11,009) 세그먼트 2 순서번호 : 11,010(범위 :11,010 ~ 12,009) 세그먼트 3 순서번호 : 12,010(범위 :12,010 ~ 13,009) 세그먼트 4 순서번호 : 13,010(범위 :13,010 ~ 14,009) 세그먼트 5 순서번호 : 14,010(범위 :14,010 ~ 16,009) 풀이

37 세그먼트에 있는 순서번호 영역의 값은 해당 세그먼트에 포함된 첫 번째 데이터 바이트의 번호를 정의한다.
전송 제어 프로토콜(계속) 순서번호 세그먼트에 있는 순서번호 영역의 값은 해당 세그먼트에 포함된 첫 번째 데이터 바이트의 번호를 정의한다.

38 세그먼트의 확인 응답 영역의 값은 상대방이 수신하기를 기대하는 다음 데이터 번호를 정의한다. 확인 응답 번호는 누적된다.
전송 제어 프로토콜(계속) 확인 응답 번호 수신한 바이트에 대해 확인하기 위하여 사용 확인 응답 번호는 누적됨 세그먼트의 확인 응답 영역의 값은 상대방이 수신하기를 기대하는 다음 데이터 번호를 정의한다. 확인 응답 번호는 누적된다.

39 전송 제어 프로토콜(계속) 세그먼트 TCP를 사용하는 두개의 장치 사이에 데이터 전송 단위

40 전송 제어 프로토콜(계속) 세그먼트 20 ~ 60바이트 헤더와 응용 프로그램으로부터 온 데이터로 구성 헤더 필드
발신지 포트 주소 - 16비트 필드 목적지 포트 주소 – 16비트 필드 순서번호(sequence number) – 32비트 필드 확인 응답 번호(acknowledgement number) 32비트 필드 바이트 번호 x가 성공적으로 수신시 x+1이 확인 응답 번호가 됨 헤더 길이 – 4비트 필드 예비 – 6비트 필드

41 전송 제어 프로토콜(계속) 제어 여섯 개의 다른 제어 비트 또는 플래그를 정의
흐름 제어, 연결 설정과 종료, 데이터 전송 모드를 지원

42 전송 제어 프로토콜(계속) 제어 항에서의 플래그 설명 Flag Description URG
The value of the urgent pointer field is valid. ACK The value of the acknowledgment field is valid. PSH Push the data. RST The connection must be reset. SYN Synchronize sequence numbers during connection. FIN Terminate the connection.

43 전송 제어 프로토콜(계속) 윈도우 크기 검사합 긴급 지시자(urgent pointer) 선택 항목
상대방 쪽이 유지해야 하는 바이트 단위의 윈도우 크기 16비트 필드 윈도우 최대 크기는 65,535바이트 검사합 긴급 지시자(urgent pointer) 긴급 플래그 값이 설정되었을 때만 유효 선택 항목 40바이트

44 전송 제어 프로토콜(계속) 연결 TCP - 연결 지향 프로토콜 연결 설정 연결 종료 발신지와 목적지 사이에 가상 경로를 설정
한 메시지에 속하는 모든 세그먼트들은 이 가상 경로를 통해 전송 연결 설정 연결 종료

45 전송 제어 프로토콜(계속) 연결 설정 삼방향 핸드셰이크 연결 설정

46 전송 제어 프로토콜(계속) 연결 종료 네단계 연결 종료

47 전송 제어 프로토콜(계속) 연결 재설정 현재 연결이 훼손된 경우 요청 훼손 원인
한쪽 TCP가 존재하지 않는 포트에 대해 연결 요청을 받은 경우 한쪽 TCP가 비정상적인 상황으로 인해 연결 중지를 원할 경우 한쪽 TCP가 다른쪽 TCP가 오랫동안 유휴 상태인 것을 발견한 경우 연결을 없애기 위해 RST 세그먼트 전송

48 전송 제어 프로토콜(계속) 상태 천이도 TCP 소프트웨어는 유한 상태 기계(finite state machine,FSM)로 구현됨 유한 상태 기계는 제한된 상태의 수를 가지고 동작 사건에 따라 상태는 변경됨 변경되는 상태를 표현하기 위해 상태 천이도 사용

49 전송 제어 프로토콜(계속) 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. 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.

50 전송 제어 프로토콜(계속) 상태 천이도 Shape Purpose 타원 상태 화살표 있는 직선 상태 천이 점선 서버 실선
클라이언트

51 전송 제어 프로토콜(계속) 클라이언트 천이도 서버 천이도
CLOSED, SYN-SENT, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, TIME-WAIT 의 6개의 상태 클라이언트 TCP는 CLOSED 상태에서 시작 서버 천이도 CLOSED, LISTEN, SYN-RCVD, ESTABLISHED, CLOSED-WAIT, LAST-ACK 의 7개의 상태 서버 TCP는 CLOSED 상태에서 시작

52 전송 제어 프로토콜(계속) 흐름 제어(flow control)
목적지로부터 확인 응답을 받기 전에 발신지가 송신할 수 있는 데이터의 양을 정의 TCP는 응용 프로그램으로부터 전달된 데이터 버퍼에 부여되어서 송신할 준비가 되어 있는 윈도우를 정의 TCP는 슬라이딩 윈도우 프로토콜에 정의된 최대한 많은 양의 데이터를 송신

53 전송 제어 프로토콜(계속) 슬라이딩 윈도우(sliding window protocol)
데이터와 확인 응답이 송신되고 수신됨에 따라 버퍼 위에서 이동 가능 슬라이딩 윈도우는 목적지가 데이터로 넘쳐나지 않도록 하기 위하여 데이터의 흐름을 제어할 뿐만 아니라 전송을 좀 더 효과적으로 만들기 위하여 사용된다. TCP의 슬라이딩 윈도우는 바이트 단위로 제어된다.

54 전송 제어 프로토콜(계속) 송신자 버퍼

55 전송 제어 프로토콜(계속) 수신자 윈도우(Receiver Window) 수신측 버퍼의 전체 크기 : N 채워진 위치 : M
수신자 윈도우 값 = 13 – 6 = 7

56 전송 제어 프로토콜(계속) 송신자 윈도우(Sender Window)
수신자 윈도우의 크기보다 작거나 같은 크기의 윈도우를 만든다면 흐름 제어가 가능 송신되었으나 확인 응답이 되지 않은 바이트와 송신될 수 있는 바이트를 포함

57 전송 제어 프로토콜(계속) 송신자 윈도우의 이동

58 전송 제어 프로토콜(계속) 송신자 윈도우 확장
수신측 프로세스가 수신하는 것보다 더 빠르게 데이터를 처리하는 경우 송신자 윈도우의 크기 확장

59 전송 제어 프로토콜(계속) 송신자 윈도우 축소
수신 프로세스가 데이터를 수신하는 것보다 처리가 느린 경우 수신자 윈도우의 크기는 감소 수신자는 송신자 윈도우 크기의 축소를 알림

60 전송 제어 프로토콜(계속) 송신자 윈도우 종료
수신자 버퍼가 완전히 채워진 경우, 수신자 윈도우의 크기는 0이 되고, 이 정보가 송신자에게 전달되면 송신자 윈도우는 종료됨 수신자가 윈도우 크기를 0이 아닌 값으로 재통지 전까지 어떤 데이터도 전송 불가

61 전송 제어 프로토콜(계속) 어리석은 윈도우 신드롬 송신자에 의해 생성된 신드롬 문제 : 송신자가 데이터를 매우 느리게 생산
해결 송신 TCP가 큰 블록의 데이터를 송신하도록 데이터를 모을때까지 대기하게 함 대기 시간 Nagle 알고리즘을 이용

62 전송 제어 프로토콜(계속) 수신자에 의해 생성된 신드롬 수신 TCP가 데이터를 너무 느리게 처리하는 경우 생성 해결책
Clark 의 해결 방법 데이터를 수신 즉시 확인 응답을 전송 최대 크기의 세그먼트를 축적하기에 충분한 공간이 있거나 버퍼의 절반이 비어 있을때까지 0값을 가지는 윈도우 크기 통지 지연된 확인 응답 확인 응답 송신을 지연시키는 방법 입력 버퍼에 충분한 공간이 있을때까지 확인 응답 송신을 지연 장점 - 송신 TCP의 윈도우의 이동을 막음 - 트래픽 감소 단점 - 지연된 확인 응답으로 인한 재전송의 요청

63 전송 제어 프로토콜(계속) 오류 제어 TCP는 신뢰성 있는 전송층 프로토콜
손상된 세그먼트, 유실된 세그먼트, 순서가 어긋난 세그먼트, 중복된 세그먼트들을 찾아내기 위한 기법 포함 사용 도구 검사합 확인 응답 시간 종료(time-out)

64 전송 제어 프로토콜(계속) 유실 또는 손상 세그먼트 손상된 세그먼트는 최종 목적지에 의해 폐기
유실된 세그먼트는 어떤 중간 노드에 의해 폐기

65 전송 제어 프로토콜(계속) 중복 세그먼트 순서 없는 세그먼트(out-of-order segment)
확인 응답이 시간 종료 전에 도착하지 않을때 발신지 TCP에 의해 생성 목적지 TCP는 동일 순서번호를 가진 또 다른 세그먼트 수신시 그 세그먼트를 폐기 순서 없는 세그먼트(out-of-order segment) 목적지 TCP는 순서에 어긋나게 도착한 세그먼트 앞의 세그먼트 도착전까지 확인 응답 지연 세그먼트의 타이머 만기시 재전송

66 전송 제어 프로토콜(계속) 유실된 확인 응답 TCP는 누적 확인 응답 시스템을 사용

67 전송 제어 프로토콜(계속) TCP 타이머 4개의 타이머 사용

68 전송 제어 프로토콜(계속) 재전송 타이머 세그먼트의 확인 응답을 기다리는 시간을 처리
타이머 종료 전 확인 응답을 수신시 타이머는 제거 타이머 종료까지 확인 응답 미수신시 세그먼트는 재전송, 세그먼트는 다시 초기화

69 전송 제어 프로토콜(계속) 재전송 시간 계산 고정된 재전송 시간 사용 불가 동적인 재전송 시간 사용
왕복시간(round-trip time,RTT)을 기반으로 동적으로 생성 재전송 시간 = 2 × RTT

70 전송 제어 프로토콜(계속) RTT 계산 TCP 타임스탬프(time stamp) 선택 항목에서 제공되는 값 사용
세그먼트 송신과 확인 응답 수신간 시간을 계산 예> 이전 RTT :250, 현재 RTT : 70

71 전송 제어 프로토콜(계속) Karn 알고리즘 새로운 RTT 계산에 재전송된 세그먼트의 RTT 를 고려하지 않음

72 전송 제어 프로토콜(계속) 영속 타이머(Persistence Timer) 문제 해결책
확인 응답이 유실될 경우 송/수신 TCP가 서로 상대의 송신을 기다리는 교착 상태 발생 해결책 영속 타이머 사용 크기 0을 갖는 윈도우를 수신시 영속 타이머 작동 영속 타이머 종료시 프로브(probe)라는 특별 세그먼트 전송 프로브는 수신 TCP에게 확인 응답의 손실과 재송신 요구를 경고

73 전송 제어 프로토콜(계속) 연결 유지 타이머(keep-alove timer)
두 개의 TCP 사이 오랫동안 유휴 연결을 방지키 위해 구현 연결 유지 타이머를 통해 클라이언트와의 연결 종료 시간 종료 : 2시간 프로브 세그먼트 송신 간격 : 75초 간격 10번 시간 대기 타이머(time-waited timer) 연결 종료하는 동안 사용

74 전송 제어 프로토콜(계속) 데이터 밀어넣기(Pushing Data) 긴급 데이터(Urgent Data)
윈도우가 채워지는것을 기다리지 않고 즉시 세그먼트를 전송 및 수신 요청 긴급 데이터(Urgent Data) 처리 순서에 관계없이 긴급히 처리 요청키 위해 사용 URG 비트를 설정한 세그먼트 전송

75 22.4 요약


Download ppt "22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜"

Similar presentations


Ads by Google