반응형
SMALL
01. 전송 계층의 기능
- 데이터 링크 계층은 단순히 물리적인 선로를 통해 데이터를 직접 전달하기 때문에 네트워크 계층의 중개 기능이 필요 없다.
- 전송 계층은 중간에 위치한 논리적 네트워크의 중개 기능을 사용해 전송 기능을 수행한다. (다양한 논리적 자원 사용)
1. 전송 계층의 주요 기능
1.1 흐름 제어
- 양 끝단의 호스트에서 실행되는 네트워크 프로세스가 데이터를 주고받는데, 이 과정에서 필요한 주요 기능 중 하나이다.
- 송신 프로세스가 보낼 수 있는 패킷의 한계를 지정하는 방법으로 문제를 해결한다.
1.2 오류 제어
- 전송 오류가 발생하여 수신 데이터의 내용이 깨지거나 분실되면 데이터 재전송에 의한 오류 제어 기능에 의해 복구 절차가 진행된다.
- 전송 계층에서 발생하는 오류는 논리적으로 구축된 각 계층의 소프트웨어가 동작하는 과정에서 데이터를 분실하는 경우가 대부분이다.
1.3 분할과 병합
- 상위 계층에서 전송을 요구한 데이터의 크기가 전송 계층에서 처리할 수 있는 데이터 크기보다 크면 데이터를 쪼개 전송해야 한다.
- 데이터를 전송하기 전에 적합한 크기로 나누는 과정을 분할이라 한다.
- 수신 프로세스가 수신한 데이터를 원래 크기로 다시 모으는 과정을 병합이라 한다.
1.4 서비스 프리미티브(Primitive)
- 서비스 프리미티브는 전송 계층 사용자가 전송 계층 서비스를 사용하기 위한 인터페이스이다.
- 전송 계층에서는 비연결형 서비스뿐 아니라, 신뢰성이 향상된 연결형 서비스도 제공한다. (네트워크 계층은 비연결형만 지원)
2. 전송 계층 설계 시 고려 사항
2.1 주소 표현
- 전송 계층의 주소를 보통 TSAP(Transport Service Access Point)라 한다.
- 주소는 구조적 또는 비구조적으로 표현할 수 있다.
- 구조적 표현: 하나의 주소를 여러 개의 계층적인 필드로 구분한다. (Ex. 도메인 주소)
- 비구조적 표현: 주소 값만 해석해서는 컴퓨터의 논리적인 위치를 파악하기 어렵다. (Ex. IP 주소)
2.2 멀티플렉싱
- 상방향 멀티플렉싱
- 다수의 전송 계층 연결에 대해 하부의 네트워크 계층에서 연결이 하나 형성된다.
- 여러 전송 계층의 연결에서 발생한 데이터가 동일한 경로로 전송되면 하나의 네트워크 연결에 묶어 전송할 수 있다.
- 일반적인 연결 구조보다 네트워크 계층에서 만들어지는 가상 회선 연결의 개수를 줄일 수 있어 연결 설정 시간이 단축된다.
- 하방향 멀티플렉싱
- 하나의 전송 연결 설정을 의미하는 포트에 다수의 가상 회선을 할당한다.
- 전송 속도뿐 아니라, 전송 계층에서 발생하는 데이터의 특성에 따라 개별 가상 회선을 할당하여 효과적인 통신이 가능하다.
2.3 연결 설정
- 연결을 요청하는 프로세스의 Conn_Req(연결 설정 요구)와 상대편 프로세스에서 Conn_Ack(연결 수락)의 회신으로 완료된다.
- 연결 요청은 양자의 합의에 의해서만 가능하다. (Req 요구 받고 연결 요청 거부 가능)
- 오류가 발생하지 않은 정상 상태에서의 3단계 설정의 동작 과정이다.
- A 프로세스는 임의의 송신 순서 번호 x를 지정하여 연결 설정을 요청한다.
- 수신하는 B 프로세스는 연결 설정 요구에 대한 순서 번호 x에 대해 응답을 보낸다. 이때 순서 번호 y는 자신의 초기 송신 번호를 왼쪽 프로세스에 알려주기 위해 사용한다.
- A 프로세스는 Data_Req로 데이터 전송과 함께 응답 정보를 보낸다.
- 자신이 설정한 순서 번호 x를 사용해 데이터를 전송하고, B 프로세스가 설정한 순서 번호 y에 대해서도 응답해야 한다.
2.4 연결 해제
- 한쪽 프로세스가 일방적으로 Data_Req를 전송해 연결 종료를 선언할 수 있다.
- Disc_Req에 대한 상대 프로세스의 동의가 없어도 연결이 끊기는 방식이다.
- 한쪽 프로세스가 Disc_Req를 전송한다는 의미는 중앙 사각형의 기능을 정지시켜, 둘 사이의 연결이 해제되는 것을 의미한다.
- A 프로세스가 B 프로세스에 전송할 데이터가 남거나, 전송 중이지만 아직 완료되지 않은 시간 t에 상대 프로세스와 연결 종료가 이루어진다. 그러면 데이터 전송을 지원하는 기능이 정지되어 데이터 전송을 완료할 수 없는 문제가 발생한다.
- 하나의 연결에 2개의 단방향 연결을 지원하는 공간이 존재하는 것과 같다.
- A 프로세스의 데이터 전송 과정 중 B 프로세스의 연결 해제 요구가 발생해도 아래쪽 기능만 정지하고, 위쪽 기능은 여전히 정상적으로 수행한다.
- 두 프로세스 사이의 연결을 완전히 종료하려면 양쪽에서 자신에게 할당된 단방향의 기능을 명시적으로 정지해야 한다.
- 연결을 해제하려면 두 프로세스 모두 Disc_Req를 전송해야 한다.
02. TCP 프로토콜
- 연결형 서비스를 제공한다.
- 전이중 방식의 양방향 가상 회선을 제공한다.
- 신뢰성 있는 데이터 전송을 보장한다.
- IP 프로토콜 위에서 실행되는 전송 계층 프로토콜은 서비스의 유형에 따라 2 종류로 구분한다.
- TCP: 연결형 서비스를 지원하는 프로토콜
- UDP: 비연결형 서비스를 지원하는 프로토콜
- 전송 계층 프로토콜은 운영 체제의 내부 기능을 구현된다.
- 해당 서비스를 사용하려면 상위 계층에서 시스템 콜이라는 프로그램 호출 방식을 이용해야 한다.
1. TCP 헤더 구조
1.1 TCP 헤더의 필드
- Source Port/Destination Port(송신 포트/수신 포트): TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당된 네트워크 포트 주소
- Sequence Number(순서 번호): 송신 프로세스가 지정하는 순서 번호
- Acknowledgement Number(응답 번호): 수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용한다.
- Data Offset(데이터 옵셋): TCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치를 나타내므로 TCP 헤더의 크기가 된다.
- Reserved(예약): 예약 필드
- Window(윈도우): 슬라이딩 윈도우 프로토콜에서 수신 윈도우의 버퍼 크기를 지정하려고 사용한다.
- Checksum(체크섬): TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터 모두에 대한 변형 오류를 검출하려고 사용한다.
- Urgent Pointer(긴급 포인터): 긴급 데이터를 처리하기 위한 것으로, URG 플래그 비트가 지정된 경우에 유효하다.
1.2 TCP 헤더의 플래그 비트
- URG: Urget Pointer 필드가 유효한지 나타낸다.
- ACK: Acknowledgment Number 필드가 유효한지 나타낸다.
- PSH: 현재 세그먼트에 포함된 데이터를 상위 계층에 즉시 전달하도록 지시할 때 사용한다.
- RST: 연결의 리셋이나 유효하지 않은 세그먼트에 대한 응답용으로 사용한다.
- SYN: 연결 설정 요구를 의미하는 플래그 비트이므로 가상 회선 연결을 설정하는 과정에서 사용한다.
- FIN: 한쪽 프로세스에서 더는 전송할 데이터가 없어 연결을 종료하고 싶다는 의사 표시를 상대방에게 알리려고 사용한다.
1.3 혼잡 제어
- TCP는 ECN 기능을 지원하기 위해 CWR 필드와 ECE 필드를 정의한다.
- ECN 기능: 라우터가 송신 프로세스에 명시적으로 혼잡 발생을 알려주어 송신 프로세스 스스로 트래픽을 완하하는 기술
- CWR(Congestion Window Reduced): ECE 비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지
- ECE(Explicit Congestion Notification Echo): 네트워크 트래픽이 많아질 때 라우터가 송신 프로세스에 명시적으로 혼잡을 알리기 위해 사용
1.4 캡슐화
- 상위 계층에서 내려온 전송 데이터는 TCP 헤더 뒤에 추가되어 TCP 세그먼트를 구성한다.
- TCP 세그먼트는 다시 IP 프로토콜로 보내지고, IP 헤더에 캡슐화되어 데이터 링크 계층으로 보내진다.
2. 포트 번호
- 포트 번호는 TCP와 UDP가 상위 계층에 제공하는 주소 표현 방식이다.
- 유닉스 환경에서 소켓으로 포트를 구현하므로, TCP/UDP 프로토콜을 사용하려면 시스템 콜의 인터페이스를 알아야 한다.
- 소켓 시스템 콜을 이용해 TCP 연결 설정이 되면 통신 양단의 프로세스가 사용하는 고유 주소는 해당 호스트의 IP 주소와 호스트 내부의 포트 번호가 조합된 형태이다.
- 사용자가 연결을 원하는 서버의 호스트 IP 주소만 클라이언트 프로그램에 알려주고, 포트 번호 선택은 프로그램에서 자동으로 해준다.
- TCP, UDP 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 포트로 간주된다.
서비스 | 포트 번호 |
FTP(데이터 채널) | 20 |
FTP(제어 채널) | 21 |
Telnet(텔넷) | 23 |
SMTP | 25 |
DNS | 53 |
TFTP | 69 |
HTTP | 80 |
rlogin | 513 |
rsh | 514 |
portmap | 111 |
Well-known 포트
- 인터넷 환경에서 많이 사용하는 네트워크 응용 서비스의 서버 프로세스에 할당된 포트 번호를 Well-known 포트라 한다.
- 전 세계 모든 컴퓨터가 동일한 포트 번호를 사용하도록 권고받고 있다.
- 인터넷에서 자주 사용하는 응용 서비스는 모두 고정된 포트 번호를 사용한다.
03. TCP 프로토콜을 이용한 데이터 전송
1. 연결 설정
- A 프로세스가 연결 설정을 요구하고, B 프로세스가 이를 수락하는 형식이다.
- A 프로세스는 먼저 TCP 헤더의 SYN 플래그를 지정한 세그먼틀르 전송함으로써 연결 설정을 요구한다.
- 연결 설정 요구를 받은 B 프로세스가 연결을 수락하려면 이에 대한 긍정 응답을 해야 한다. (SYN, ACK)
- 마지막 3번째 세그먼트는 B 프로세스가 전송한 연결 수락 세그먼트가 제대로 도착했음을 알린다.
2. 데이터 전송
2.1 정상적인 데이터 전송
- TCP 데이터 전송은 양쪽 프로세스가 동시에 데이터를 전송할 수 있는 전이중 방식을 지원한다.
- A 프로세스가 B 프로세스에 전송할 데이터가 있으면 3번째 세그먼트에 데이터를 실어서 전송할 수 있다.
- A 프로세스가 먼저 순서 번호 11번부터 5바이트의 데이터를 전송하고, B 프로세스는 순서 번호 51부터 10바이트의 데이터를 전송한다. (순서 번호와 응답 번호의 조합은 전송되는 데이터 양에 따라 적절히 조정됨)
- TCP 흐름 제어는 프로토콜 헤더의 Window 필드를 사용한다.
- Window 필드에 지정한 값 이상으로 데이터를 전송할 수 없으므로 수신 프로세스는 자신의 처리 능력에 맞는 값으로 지정해 송신 프로세스의 전송 속도를 제어한다.
2.2 데이터 전송 오류
- 순서 번호가 동일한 데이터가 도착하면 중복으로 판단하여 해당 데이터를 버리고, 중간의 순서 번호가 빠지면 데이터를 분실했다고 판단한다.
- TCP는 데이터 변형에도 수신 프로세스가 응답하지 않아 데이터 분실과 동일하게 처리(재전송)된다. (NAK 미사용)
- A 프로세스가 TCP 세그먼트 3개를 연속으로 전송하고, 이 중 3번째 세그먼트에 오류가 발생했다고 가정한다.
- A 프로세스가 번호 11~20번, 21~30번, 31~40번 데이터 세그먼트를 전송하고, 이들이 모두 정상적으로 수신되면 41번 응답 번호를 긍정 응답으로 회신받는다.
- 31~40번 데이터 세그먼트에 오류가 발생했으므로 31번 응답 번호를 긍정 응답으로 회신받았다.
- A 프로세스는 31~40번 데이터에 대한 긍정 응답을 받지 못했으므로 타임아웃 기능을 통해 해당 세그먼트를 재전송해야 한다.
- 세그먼트가 중복으로 수신될 수도 있기 때문에 수신 프로세스는 순서 번호를 기준으로 중복 여부를 처리할 수 있어야 한다.
3. 연결 해제
- 연결 해제 단계는 연결을 해제하고자 하는 쪽에서 FIN 플래그를 지정해 요구한다.
- 연결 해제 세그먼트를 받은 프로세스가 FIN 플래그로 응답할 때까지 연결은 계속 유지된다.
- 그림에서는 5바이트의 데이터를 전송한 후 FIN 플래그를 사용해 연결 종료에 합의하고 있다.
4. 혼잡 제어
- ECN 기능을 사용하려면 TCP 연결 설정 단계에서 ECN 기능을 사용할 것인지 여부를 협상해야 한다.
- 데이터 전송 단계에서는 혼잡을 인지한 라우터가 수신 프로세스에 혼잡을 통지한다. 그러면 수신 프로세스는 다시 송신 프로세스에 혼잡을 통지함으로써 송신 프로세스가 전송하는 데이터의 양을 줄이는 방식으로 혼잡 제어가 이루어진다.
- TCP 연결 설정 단계에서 ECN 사용에 대한 동의 절차를 거쳐야 한다.
- A 프로세스에서 SYN 플래그와 함께 CWR, ECE 플래그를 지정하여 ECN 기능이 동작하는 연결 설정 요청을 보낸다.
- 요청을 받은 B 프로세스에서 ECN 기능을 사용할 의사가 있으면 (a)처럼 ECE 플래그를 함께 보내고, 없으면 (b)처럼 SYN, ACK 플래그만 지정하여 응답한다.
- ECN 기능이 동작하는 TCP 연결을 사용하여 데이터를 전송하는 과정의 혼잡 제어 처리이다.
- (a) 먼저 TCP 세그먼트를 전송하려는 A 프로세스의 IP 프로토콜은 IP 헤더 내의 ECN 필드 값을 ECT(01 혹은 10)로 설정하여 전송한다.
- 전송되는 모든 데이터는 항상 이 값이 설정된 상태로 전송된다.
- IP 헤더에 ECT가 설정되었다는 것은 TCP가 ECN 기능을 지원한다는 의미이다.
- (b) 이후 임의의 시점에서 네트워크에 혼잡이 발생하고, 라우터가 이를 감지했다.
- (c) 라우터가 수신 프로세스인 B 프로세스에 통신한다.
- 수신 프로세스의 중개를 거쳐 간접적으로 송신 프로세스에 혼잡을 통지한다.
- (d) 라우터로부터 IP 헤더의 CE 값을 받은 B 프로세스는 모든 TCP 세그먼트에 대해 TCP 헤더의 ECE 플래그를 지정하여 라우터가 감지한 혼잡을 A 프로세스에 알려준다.
- (e) 혼잡을 인지한 A 프로세스는 송신 윈도우를 조절하여 전송되는 데이터의 양을 줄이고, (f) TCP 헤더의 CWR 플래그를 지정함으로써 혼잡에 적절한 조치를 취했음을 통지한다.
References
- 쉽게 배우는 데이터 통신과 컴퓨터 네트워크
- https://blog.naver.com/PostView.nhn?blogId=shs6903&logNo=220481726984
- https://naon.me/posts/til88
반응형
LIST
'독서 > 쉽게 배우는 데이터 통신과 네트워크' 카테고리의 다른 글
[쉽게 배우는 데이터 통신과 네트워크] CH11. 상위 계층의 이해 (0) | 2024.06.11 |
---|---|
[쉽게 배우는 데이터 통신과 네트워크] CH10. 전송 계층 (0) | 2024.06.09 |
[쉽게 배우는 데이터 통신과 네트워크] CH8. 네트워크 계층 (0) | 2024.06.04 |
[쉽게 배우는 데이터 통신과 네트워크] CH7. IP 프로토콜 (0) | 2024.05.30 |
[쉽게 배우는 데이터 통신과 네트워크] CH6. 데이터 링크 계층 (0) | 2024.05.30 |