2022. 11. 17. 19:04ㆍWeb/Network
전송 계층 프로토콜
- 데이터 링크 계층과 유사(오류 제어, 흐름 제어, 데이터 순서화 등 제공)
- 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송, 전송 계층은 논리적으로 1:1 연결된 호스트 사이의 전송
전송 계층 주요 기능
흐름 제어
- 계층 2와는 다을 버퍼 관리 방법 필요
- 수신자가 송신자의 전송 속도보다 느리게 수신 -> 버퍼 용량 초과로 데이터 분실 -> 타임아웃 기능을 통한 재전송 유발
- 수신자가 슬라이딩 윈도우 프로토콜의 윈도우 하단 값을 조정
오류 제어
- 데이터 변형, 데이터 분실 오류 시 재전송 기능으로 복구
- 수신자의 요구(NAK) 또는 송신자의 판단(타임아웃)
- 선로 오류보다 각 계츠으이 소프트웨어 동작 과정 중에 분실하는 경우가 대부분
분할과 병합
- 상위 계층에서 요구한 데이터 크기가 전송 계층에서 처리할 수 있는 크기보다 큰 경우 분할 및 병합
- 수신 프로세스가 상위 계층에 데이터를 보낼 때는 반드시 데이터의 병합 과정을 거쳐야 계층 구조의 틀이 유지됨
서비스 프리미티브
- 전송 계층 사용자가 전송 계층 서비스를 사용하기 위한 인터페이스
- 네트워크 계층의 경우 대부분 비연결형 서비스 프리미티브가 정의
- 전송 계층의 경우 비연결형과 신뢰성이 향상된 연결형 서비스 모두 제공
전송 계층 설계 시 고려 사항
주소 표현
- 기본적으로 필요한 일반 사항은 호스트와 라우터, 네트워크 프로세스를 구분할 수 있는 주소
- TCP/IP 환경 : 네트워크 계층의 호스트 IP 주소 + 전송 계층의 포트 번호 조합
- TSAP(Transport Service Access Point)
- 여러 개의 계층적 필드로 구분
- 값만 해석해서는 논리적인 위치 파악 불가
- IP 주소 : 네트워크와 호스트의 계층적인 특성
멀티플렉싱(Multiplexing)
- 개별적으로 설정된 TPDU의 주소가 동일한 경우 하나의 가상회선에 실어 보내는 것이 유리
- 상향 : 다수의 전송 계층 연결을 하부의 네트워크 계층에서 하나의 연결로 지원. 네트워크 계층의 가상 회선 연결의 개수를 줄일 수 있음
- 하향 : 하나의 전송 연결에 대하여 네트워크 계층에서 다수의 가상 회선을 지원. 멀티미디어 전송에 유리
연결 설정
- Conn_Req : 한쪽의 연결 설정 요규
- Conn_Ack : 상대방의 연결 수락 응답
- 2단계 연결 설정 : 최소한의 단계, 수신단에서 거부 가능
- 실제로 프리미티브 전달 과정에서 분실, 변형, 복사 가능성이 있으므로 이러한 문제들을 고려해야함
- 3단계 연결 설정(3-Way Handshake)
- 세 번째의 Data_Req는 Conn_Ack에 대한 응답 기능도 수행
- 보낼 데이터가 없는 경우 Conn_Ack(y,x)에 대한 응답을 따로 보내야함
- A 프로세스에 전송할 데이터가 있으면 마지막의 Conn_Ack_Ack 대신 바로 데이터를 전송 가능
연결 해제
- 어느 한쪽의 Disc_Req로 전체 연결 해제
- Disc_Req에 대한 상대 프로세스의 동의가 없어도 연결이 끊김
- 하나의 연결에 2개의 단방향 연결을 지원하는 원통이 존재하는 것과 같음
- 어느 한쪽에서 해제 요청을 하는 경우 그 프로세스가 송신하는 원통 기능만 정지
- 양쪽 모두 Dis_req를 전송해야 해제됨
TCP 헤더 구조
TCP(Transport Control Protocol)
- IP 프로토콜 위에서 연결형 서비스를 지원하는 전송 계층 프로토콜
- 연결형 서비스 제공, 전이중 방식의 양방향 가상 회선 제공, 신뢰성 있는 데이터 전송 보장
- 일반적으로 전송 계층 프로토콜은 운영체제 내부 기능으로 구현
- 데이터를 세그먼트라는 블록 단위로 분할하여 전송
- 상위 계층에서는 연결형 서비스와 비연결형 서비스를 선택하여 전송 계층 프로토콜(TCP, UDP) 선택
- 데이터 링크 계층에는 다양한 네트워크 인터페이스 존재
TCP 헤더
- Source Port / Destination Port : 송수신 포트 번호
- Sequence Number : 순서 번호
- Acknowledgement Number : 응답 번호, 다음에 수신하기를 원하는 데이터를 지정
- Data Offset : 데이터가 시작하는 위치, TCP 헤더의 크기
- Window : 수신 윈도우의 버퍼 크기 지정
- Checksum : 헤더와 데이터에 대한 오류 검출
- Urgent Pointer : 송신 프로세스가 긴급히 처리하기를 원하는 데이터의 처리
- TCP 헤더의 플래그 비트 : 플래그 비트가 8개 정의, 처음 2개 비트는 혼잡 제어 용도로 사용
> URG : Urgent Pointer 유효
> ACK : Acknowledge Number 유효, 정상적인 피기배킹 환경에서는 연결 설정의 첫 번째 세그먼트를 제외한 모든 세그먼트에서 1로 설정
>PSH : 현재 세그먼트의 데이터를 즉시 상위 계층에 전달하도록 지시
>RST : 연결의 리셋이나 유효하지 않은 세그먼트에 대한 응답
>SYN : 연결 설정 요청
>FIN : 점진적 방식의 연결 종료 요청, 한 방향의 연결만 해제되므로 쌍방이 FIN을 보내야 모든 연결이 해제됨
>CWR : ECE 비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지. 더 이상 ECE를 전송하지 말라는 의미
>ECE : 네트워크 트래픽이 많아질 때 라우터가 송신 프로세스에 명시적으로 혼잡을 알리려고 사용
포트 번호
- TCP, UDP 프로토콜이 상위 계층에 제공하는 주소 표현 방식
- TCP, UDP가 독립적으로 관리
- Unix 계열의 경우 /etc/services에 저장
- 클라이언트-서버 방식에서 클라이언트는 서버의 IP 주소와 포트 번호를 알아야 통신 가능
- Well-known 포트 : 많이 사용하는 인터넷 서비스에 고정된 포트 번호 할당
- 서버의 포트번호는 Well-known 포트번호를 이용하고 클라이언트의 경우 시스템에서 임의의 포트를 자동 할당
* 쉽게 배우는 데이터 통신과 네트워크(3판) 책을 바탕으로 작성하였습니다.
'Web > Network' 카테고리의 다른 글
10. 전송 계층 (0) | 2022.11.17 |
---|---|
9. TCP 프로토콜(2) (0) | 2022.11.17 |
8. 네트워크 계층(3) (0) | 2022.11.15 |
8. 네트워크 계층(2) (0) | 2022.11.15 |
8. 네트워크 계층(1) (0) | 2022.11.15 |