도서/모두의 네트워크
전송계층
곰돌이볼
2023. 5. 4. 13:38
전송계층
- 전송계층의 역할
- 목적지까지 신뢰할 수 있는 데이터 전송
- 오류 점검 → 오류 발생 시 재전송
- 전송된 데이터가 사용되는 어플리케이션 식별
- 전송계층의 특징
- 신뢰성/정확성 : 신뢰할 수 있는 데이터 전송
- 효율성 : 데이터를 빠르고 효율적으로 전달
- 통신방식
- 연결형 통신
- 상대방이 데이터를 받았는지 확인
- TCP
- 비연결형 통신
- 상대방이 데이터를 받았는지 확인하지 않음
- UDP
- 연결형 통신
TCP 구조
- TCP
- TCP 헤더 : TCP 전송 시 붙이는 헤더
- 세그먼트(segment) : TCP 헤더가 붙은 데이터
- TCP 헤더
- 구조
- 출발지 포트 번호(16비트)
- 목적지 포트 번호(16비트)
- 일련번호(32비트)
- 확인 응답 번호(32비트)
- 헤더 길이(4비트)
- 예약 영역(6비트)
- 코드 비트(6비트)
- 윈도우 크기(16비트)
- 체크섬(16비트)
- 긴급 포인터(16비트)
- 옵션
- 구조
- TCP의 데이터 전송 과정
- 연결(connection) : 가상의 독점 통신로 확보
- 코드 비트(6비트) : 연결의 제어 정보를 기록
- 초기값 : 0, 활성화 : 1
- 연결 확립 : SYN, ACK 필요
- 연결 종료 : FIN, ACK 필요
- 구조
- URG
- ACK : 확인 응답
- PSH
- RST
- SYN : 연결 요청
- FIN : 연결 종료
- 코드 비트(6비트) : 연결의 제어 정보를 기록
- 데이터 전송
- 연결(connection) : 가상의 독점 통신로 확보
3-way Handshake
- 3-way HandShake : TCP에서 연결 확립을 위한 패킷 요청을 3번 교환
- 컴퓨터1의 연결 확립 요청(SYN)
- 컴퓨터2의 연결 확립 응답(ACK) + 연결 확립 요청(SYN)
- 컴퓨터1의 연결 확립 응답(ACK)
- 데이터 전송
- TCP 헤더의 일련번호(sequence number)
- 분할된 데이터의 순서(송신 → 수신)
- 송신측에서 받은 확인 응답 번호(수신 → 송신)
- TCP 헤더의 확인 응답 번호(acknowledgement number)
- 다음에 받을 데이터의 순서(수신 → 송신)
- TCP 헤더의 일련번호(sequence number)
- 데이터 재전송
- 재전송 제어 : 데이터 유실이나 손상 시 데이터 재전송
- 버퍼
- 수신측에서 연속된 세그먼트를 수신 시 일시적으로 세그먼트를 저장하는 장소
- 연속된 세그먼트나 대량의 세그먼트를 수신시 사용
- TCP 헤더의 윈도우 크기(window size) : 버퍼의 한계 크기 → 버퍼의 오퍼블로우 방지
- 윈도우 크기를 통해서 확인 응답을 하나씩 하지 않고 연속적으로 송수신할 수 있는 데이터 크기 확인 가능
- 연결 종료 패킷 교환 과정
- 컴퓨터1의 연결 종료 요청(FIN)
- 컴퓨터2의 연결 종료 응답(ACK)
- 컴퓨터2의 연결 종료 요청(FIN)
- 컴퓨터1의 연결 종료 응답(ACK)
포트 번호(port number)
- 포트 번호(port number)
- 데이터가 사용되는 어플리케이션을 구분하기 위해서 사용
- 범위 : 0 ~ 65535번 포트
- 0 ~ 1023번 포트(well-known ports) : 주요 프로토콜이 사용하도록 예약되어 있음
- 22 : SSH
- 25 : SMTP
- 53 : DNS
- 80 : HTTP
- 110 : POP3
- 443 : HTTPS
- 1025~ 번 포트(random ports) : 클라이언트 측의 송신 포트로 사용
- 0 ~ 1023번 포트(well-known ports) : 주요 프로토콜이 사용하도록 예약되어 있음
- TCP 헤더의 출발지 포트 번호(source port number)
- TCP 헤더의 목적지 포트 번호(destination port number)
UDP
- UDP
- 비연결형 통신이기 떄문에 확인 작업을 하나하나 하지 않음
- 데이터를 효율적으로 빠르게 전송
- 동영상이나 스트리밍 전송할 때 많이 사용되는 기술
- 브로드캐스트(broadcast) 가능 : 데이터 일괄 전송 가능 ↔ TCP는 목적지를 알아야 하기 때문에 일괄 통신 불가능
- UDP 헤더
- 출발지 포트 번호(16비트)
- 목적지 포트 번호(16비트)
- 길이(16비트)
- 체크섬(16비트)