728x90
전송계층
전송계층의 역할
- 응용 계층의 어플리케이션 프로세스 식별 → 포트를 통해서 식별한다.
- 네트워크 계층의 신뢰성/연결성 확립
포트
- 네트워크 계층은 A호스트와 B호스트 어디있는지 IP 주소를 토대로 식별할 수 있다. 하지만 B 호스트한테 패킷이 도달한 후 어떤 응용 어플리케이션에게 패킷을 줘야할지 알 수 없다.
- 포트번호를 어떤 어플리케이션에게 패킷을 전달해야하는지 알려준다.
- 어플리케이션 프로세스를 식별해주는 고유한 문자열
- 16비트로 표현 가능 65536개
- 포트 범위 : 0번부터 65535번까지
웰 노운 포트, 시스템 포트,대중적인 포트
- HTTP, HTTPS 등 대중적인 프로토콜을 할당해주는 포트
등록된 포트
- 잘 알려진 포트에 비해서는 덜 범용적이지만 흔히 사용되는 애플리케이션
동적포트, 사설 포트, 임시포트
- 사용자가 자유롭게 할당 가능한 포트
- 서버는 일반적으로 잘 알려진 포트와 등록된 포트로 동작
- 클라이언트는 일반적으로 동적 포트로 동작
NAT
- 공인 IP 주소와 사설 IP 주소간의 변환 기능
- 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유 가능하다. 포트를 활용하여 공인 주소를 공유한다.
TCP 세그먼트
- MSS
- TCP 세그먼트로 보낼 수 있는 최대의 크기
TCP 세그먼트 구조 중 중요한 부분
- 출발지 포트
- 목적지 포트
- 순서 번호
- 송수신되는 세그먼트 데이터 첫 바이트에 부여되는 번호
- 확인 응답 번호(ACK)
- 순서번호에 대한 응답(다음으로 수신받길 기대하는 바이트 번호)
- 제어비트
- ACK: 세그먼트 승인을 나타내는 비트
- SYN: 연결 수립을 위한 비트
- FIN: 연결을 끝내기 위한 비트
- RST: 연결을 리셋하기 위한 비트
- 윈도우
- 수신지 윈도우 크기, 한번에 수신 받고자 하는 양
- 확실하게 전송하는 프로토콜 TCP
UDP
- IP 패킷을 감싸는 껍데기이다.
- 비연결성/비신뢰성 프로토콜
- TCP의 재전송/흐름 제어/혼잡 제어 등의 기능 없음
[2025.01.24] [컴퓨터공학] [네트워크] 전송계층
전송계층
전송계층의 역할
- 응용 계층의 어플리케이션 프로세스 식별 → 포트를 통해서 식별한다.
- 네트워크 계층의 신뢰성/연결성 확립
포트
- 네트워크 계층은 A호스트와 B호스트 어디있는지 IP 주소를 토대로 식별할 수 있다. 하지만 B 호스트한테 패킷이 도달한 후 어떤 응용 어플리케이션에게 패킷을 줘야할지 알 수 없다.
- 포트번호를 어떤 어플리케이션에게 패킷을 전달해야하는지 알려준다.
- 어플리케이션 프로세스를 식별해주는 고유한 문자열
- 16비트로 표현 가능 65536개
- 포트 범위 : 0번부터 65535번까지
웰 노운 포트, 시스템 포트,대중적인 포트
- HTTP, HTTPS 등 대중적인 프로토콜을 할당해주는 포트
등록된 포트
- 잘 알려진 포트에 비해서는 덜 범용적이지만 흔히 사용되는 애플리케이션
동적포트, 사설 포트, 임시포트
- 사용자가 자유롭게 할당 가능한 포트
- 서버는 일반적으로 잘 알려진 포트와 등록된 포트로 동작
- 클라이언트는 일반적으로 동적 포트로 동작
NAT
- 공인 IP 주소와 사설 IP 주소간의 변환 기능
- 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유 가능하다. 포트를 활용하여 공인 주소를 공유한다.
TCP 세그먼트
- MSS
- TCP 세그먼트로 보낼 수 있는 최대의 크기
TCP 세그먼트 구조 중 중요한 부분
- 출발지 포트
- 목적지 포트
- 순서 번호
- 송수신되는 세그먼트 데이터 첫 바이트에 부여되는 번호
- 확인 응답 번호(ACK)
- 순서번호에 대한 응답(다음으로 수신받길 기대하는 바이트 번호)
- 제어비트
- ACK: 세그먼트 승인을 나타내는 비트
- SYN: 연결 수립을 위한 비트
- FIN: 연결을 끝내기 위한 비트
- RST: 연결을 리셋하기 위한 비트
- 윈도우
- 수신지 윈도우 크기, 한번에 수신 받고자 하는 양
- 확실하게 전송하는 프로토콜 TCP
UDP
- IP 패킷을 감싸는 껍데기이다.
- 비연결성/비신뢰성 프로토콜
- TCP의 재전송/흐름 제어/혼잡 제어 등의 기능 없음
- 체크섬 필드는 신뢰성과는 관련이 없다. 받은 데이터에 오류가 있는 지 검사해주는
- UDP는 빠르게 전송하는 프로토콜
최근 각광받는 UDP
- HTTP/3, NTP, RIP, DNS, DHCP
TCP 연결혈 프로토콜
- 연결 설정
Three-way handshake
3개의 단계를 거쳐 데이터 송수신
액티브 오픈, 패시브 오픈 호스트
아래 액티브 오픈: 호스트 A, 패시브 오픈: 호스트 B
연결 종료
액티브 클로즈 호스트
- 처음 연결을 종료하는 호스트
- 마지막 ACK을 보낸뒤 일정 시간을 기다린 뒤 연결을 종료한다.
- 마지막 ACK 세그먼트의 유실 대비
- 또 다른 연결 과정에서 패킷 혼선 방지
TCP 상태
- TCP는 연결형 프로토콜이자 스테이트폴(stateful) 프로토콜이라고 한다.
- 현재 연결 상태를 나타내기 위해 다양한 상태 활용
가능한 상태 목록
- CLOSED
- 아무런 연결이 없는 상태
- LISTEN
- 연결 수립 도중 사용되는 상태
- SYN 세그먼트를 기다리는 상태
- SYN-SENT
- 연결 수립 도중 사용되는 상태
- SYN 세그먼트를 보낸뒤 SYN+ACK 세그먼트 대기
- SYN-RECEIVED
- 연결 수립 도중 사용되는 상태
- SYN+ACK 세그먼트를 보낸 뒤 그에 대한 ACK 대기하는 상태
- 연결 수립 도중 사용되는 상태
- ESTABLISHED
- Three-way handshake 끝났을 경우
- 연결되어 있는 상태
- 언제든지 데이터 송수신이 가능한 상태
- FIN-WAIT-1
- 연결 해제시 사용되는 상태
- FIN-WAIT-2
- 연결 해제시 사용되는 상태
- CLOSE-WAIT
- 연결 해제시 사용되는 상태
- CLOSING
- 연결 해제시 사용되는 상태
- LAST-ACK
- 연결 해제시 사용되는 상태
- TIME-WAIT
- 연결 해제시 사용되는 상태
- 일정시간동안 기다리는 상태
- CLOSING
- 상대 FIN 세그먼트에 ACK 세그먼트를 보냈지만 자신의 FIN 세그먼트에 대한 ACK 세그먼트를 받지 못한 상태 (보통 동시에 연결을 종료하려 할 때)
TCP 재전송 기능
TCP는 무엇인가를 확실히 전송했다는 보장이 있어야 한다.
- 재전송 기반의 오류 제어: 잘못 전송된 경우 재전송
- 흐름 제어: 받을 수 있는 만큼만 받기
- 혼잡 제어: 보낼 수 있는 상황에서 보내기
언제 잘못되었음을 인지하는가
- 중복된 ACK 세그먼트를 수신 했을 때
- 타임아웃이 발생했을 때
- 올바른 예시
- 잘못된 예시
- 타임아웃 기반의 재전송
ARQ
- 재전송을 기반으로 잘못된 전송을 바로잡는 것
- Stop and Wait ARQ
- 제대로 보냈음을 확인하기 전까지는 보내지 않음.
- 전송하고 확인하고 전송하고 확인하고
- 네트워크 이용 효율이 낮아지는 문제
- Go Back N ARQ
- 파이프라인 방법
- 올바른 세그먼트에 대해서 확인 응답 보냄
- 올바르지 않은 세그먼트가 확인되면 손실 이후 모든 세그먼트를 폐기한다.
- 누적 확인 응답
- Selective Repeat ARQ
- 올바른 세그먼트에 대해서만 확인 응답 보냄
- 각세그먼트에대한확인응답:개별확인응답
- 빠른 재전송(fast retranmit)
- 빠른 재전송이 없는 경우
- 재전송 타이머가 만료되어야 비로소 재전송이 된다.
- 빠른 재전송이 있는 경우
- 재전송 타이머가 만료되지 않아도 중복 세그먼트가 수신되면 재전송함.
- 빠른 재전송이 없는 경우
TCP 흐름/혼잡 제어
- 파이프라이닝 전송: 송수신 입장에서 무엇을 고려해야 할까
- 송신버퍼와 수신버퍼
- 송신버퍼: 어플리케이션 계층에서 전송할 데이터 임시 저장
- 수신버퍼: 네트워크 계층에서 수신할 데이터 임시 저장
TCP 흐름제어
- 송신호스트가 수신호스트가 처리할수있는 수신버퍼보다 더 많은데이터를전송하면
- 버퍼 오버플로우: 일부 데이터가 처리되지 않을 수 있음
728x90
'Computer Science > Network' 카테고리의 다른 글
[Computer Science] [네트워크] 네트워크 거시적으로 보기 (0) | 2025.01.20 |
---|