백엔드/네트워크
[모두의 네트워크] 6장 전송 계층 : 신뢰할 수 있는 데이터 전송하기
박지환
2022. 12. 4. 16:34
23. 전송 계층의 역할
- 전송 계층: 목적지에 신뢰할 수 있는 데이터를 전달
- 전송 계층의 기능
- 오류 점검 기능
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능
- 전송 계층의 특징
- 신뢰성/정확성: 데이터를 목적지에 문제없이 전달하는 것 → 연결형 통신 → TCP(Transmission Control Protocol)
- 효율성: 효율적으로 데이터를 전달하는 것 → 비연결형 통신 → UDP(User Datagram Protocol)
24. TCP의 구조
- TCP: 연결형 통신 프로토콜
- 데이터를 목적지에 문제없이 전달하는 것을 목적으로 함
- 세그먼트(segment) = TCP 헤더 + 데이터 (캡슐화)
- 연결(connection): TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로
- TCP 헤더의 코드 비트: 연결의 제어 정보 기록
- SYN: 연결 요청
- ACK: 확인 응답
- FIN: 연결 종료
- TCP 헤더의 코드 비트: 연결의 제어 정보 기록
- 연결 확립 과정: 3-way 핸드셰이크: 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 3번 교환하는 과정
- SYN: 연결 확립 요청 (TCP 헤더 코드 비트 SYN = 1)
- SYN + ACK: 연결 확립 응답 + 연결 확립 요청 (TCP 헤더 코드 비트 ACK = 1, SYN = 1)
- ACK: 연결 확립 응답 (TCP 헤더 코드 비트 ACK = 1)
- 연결 종료 과정
- FIN: 연결 종료 요청 (TCP 헤더 코드 비트 FIN = 1)
- ACK: 연결 종료 응답 (TCP 헤더 코드 비트 ACK = 1)
- FIN: 연결 종료 요청 (TCP 헤더 코드 비트 FIN = 1)
- ACK: 연결 종료 응답 (TCP 헤더 코드 비트 ACK = 1)
25. 일련번호와 확인 응답 번호의 구조
- TCP 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호와 확인 응답 번호를 사용함 (TCP는 데이터를 분할해서 보냄)
- 일련번호(sequence number): 송신 측에서 수신 측에게 해당 데이터가 몇 번째 데이터인지 알려주는 역할
- 확인 응답 번호(acknowldgement number): 수신 측이 몇 번째 데이터를 수신했는지 알려주는 역할
- 재전송 제어: 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송
- 통신 효율을 높이기 위해 송신 측은 세그먼트를 연속해서 보내고, 수신 측은 세그먼트를 버퍼에 저장하여 대응함
- 버퍼(buffer): 수신한 세그먼트(데이터)를 일시적으로 저장하는 장소
- 오버플로가 발생하지 않도록 TCP 헤더의 윈도우 크기 값에 해당 버퍼의 한계 크기를 설정함
- 오버플로(overflow): 데이터 크기가 버퍼 크기를 넘어서는 것
- 윈도우 크기(window size): 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지 나타내는 값, 버퍼의 한계 크기
- 윈도우 크기의 초깃값은 3-way 핸드셰이크를 할 때 판단함
26. 포트 번호의 구조
- 포트 번호는 어떤 애플리케이션인지 구분하는 역할을 함
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하기 위해, TCP 헤더의 출발지 포트 번호(source port number)와 목적지 포트 번호(destination port number)가 필요함
- 포트 번호는 0~65535번까지 사용 가능
- 잘 알려진 포트(well-known port): 0~1023번, 주요 프로토콜이 사용하도록 예약되어 있는 포트들
- 일반적으로 서버 측 애플리케이션에서 사용됨
- SSH(22), SMTP(25), DNS(53), HTTP(80), POP3(110), HTTPS(443)
- 랜덤 포트: 1025번 이상, 클라이언트 측의 송신 포트로 사용
- 잘 알려진 포트(well-known port): 0~1023번, 주요 프로토콜이 사용하도록 예약되어 있는 포트들
- 데이터를 전송할 때는 상대방의 IP 주소가 필요하고, 어떤 애플리케이션에게 데이터를 전송해야하는지 구분하려면 TCP는 포트 번호가 필요
- 웹 브라우저로 접속할 때는, 웹 브라우저에는 임의의 포트가 자동으로 할당됨
27. UDP의 구조
- UDP: 비연결형 통신 프로토콜
- 데이터를 효율적으로 빠르게 보내는 것이 목적
- UDP 데이터그램 = UDP 헤더 + 데이터
- UDP 헤더는 TCP 헤더에 비해 간단함
- UDP는 상대방을 확인하지 않고 연속해서 데이터를 보냄
- UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있음 → 브로드캐스트(broadcast)
- TCP는 데이터를 전송할 때도 확인 응답을 하나씩 보내야 하기 때문에, 브로드캐스트와 같이 불특정 다수에게 보내는 통신에는 적합하지 않음
용어 정리
- 전송 계층(transport layer, 트랜스포트 계층) : 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 하므로 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않도록 함. 데이터가 중복되거나 누락되지 않고 오류 없이 순서에 맞게 전송되도록 관리함
- 연결형(connection-oriented) : 데이터를 교환하기 전에 연결을 맺고 데이터를 교환하는 동안 계속 연결을 관리하는 프로토콜의 한 형태
- 비연결형(connectionless) : 연결(connection)에 대한 초기화 과정이 없는 통신
- TCP(Transmission Control Protocol, 전송 제어 프로토콜) : 전송 계층의 프로토콜은 연결형(connection-oriented) 통신 방식이며 신뢰할 수 있는 데이터 전송을 보장함
- UDP(User Datagram Protocol) : 정보를 서로 주고받을 때 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜. 연결을 맺을 필요가 없고 정보를 보내거나 받는다는 신호도 필요하지 않음
- 3-way 핸드셰이크(three-way handshake) : TCP 통신에서 사용하는 신뢰성을 제공하기 위한 통신 방식. 컴퓨터 간에 연결을 맺기 위한 초기화 과정으로, 세 단계로 되어 있어서 three-way라고 부름
- 일련번호(sequence number) : TCP에서는 데이터를 보낼 때마다 각 데이터에 고유한 번호를 부여해서 전송을 시도함. 이 번호를 이용하여 TCP 패킷의 순서를 제어할 수 있음
- 포트 번호(port number) : 컴퓨터가 데이터 통신을 할 때 통신하고자 하는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위임. 포트 번호는 0~65535번을 사용할 수 있음.
- 잘 알려진 포트(well-known ports) : 특정 애플리케이션이 사용할 수 있도록 예약되어 있는 포트로 1~1023번 포트를 말함
Reference: http://www.yes24.com/Product/Goods/61794014
모두의 네트워크 - YES24
네트워크를 전혀 몰라도 괜찮다!초보자와 비전공자를 위한 가장 쉬운 네트워크 입문서[모두의 네트워크]는 이제 막 네트워크를 공부하기 시작했거나 공부해야겠다고 마음먹은 초급자를 대상으
www.yes24.com