728x90
1. 전송 계층의 역할
a. 전송 계층의 두가지 역할
a-1. 전송계층의 존재 이유
- 라우팅 정보가 잘못될 수도 있고 많은 라우터를 경유하는 도중 라우터에 문제가 생기거나 패킷 손상
- 물리계층, 데이터 링크 계층, 네트워크 계츠의 3층이 있으면 목적지에 데이터 보낼 수 있지만 데이터가 손상되거나 유실되더라도 해주지 않음
a-2. 전송계층
- 전송계층 : 목적지에 신뢰할 수 있는 데이터 전달
- 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 해 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 함 데이터가 중복되거나 누락되지 않고 오류 없이 순서에 맞게 전송되도록 관리함
a-3. 전송계층의 역할
- 오류를 점검하는 기능이 있어 오류 발생 시 데이터 재전송 요청
- 데이터가 제대로 도착했는지 확인하는 역할
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별
- 해당 데이터가 어떤 애플리케이션에서 사용하는 데이터인지 판단
b. 연결형 통신과 비연결형 통신
b-1. 전송계층의 특징
- 신뢰성/정확성 : 데이터를 목적지까지 문제없이 전달
- 효율성 : 데이터를 빠르고 효율적으로 전달
b-2. 연결형 통신
- 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신
- 데이터 교환 전 연결을 맺고 데이터 교환하는 동안 계속 연결 관리하는 프로토콜의 한 형태
- 상대편과 확인하면서 통신
- 신회성/정확성 우선 통신
- TCP(Transmission Control Protocol) 전송 제어 프로토콜 사용
b-3. 비연결형 통신
- 비연결형 통신 : 신뢰성을 보장하지 않지만 효율적으로 데이터 전달하는 통신
- 연결에 대한 초기화 과정이 없는 통신
- 상대편 확인하지 않고 일방적으로 데이터 전송
- 효율성 우선 통신
- 동영상은 빠른 전송이 필요해서 비연결형 통신 사용
- UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜 사용
그림 6-3
2. TCP의 구조
a. TCP란?
- 연결형 통신 프로토콜 TCP
- 세그먼트 : TCP 헤더가 붙은 데이터
- TCP 헤더 : TCP로 전송할 때 붙이는 헤더
- 목적지까지 데이터 제대로 전송하기 위해 필요한 정보 가지고 있음
- 연결형 통신은 데이터를 전송하기 전 연결 이라는 가상의 독접 통신로 확보해야함
- 연결 : TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확립하고 데이터 전송
- 대역폭 : 정해진 시간 동안 전송될 수 있는 데이터의 양 (주로 속도)
- 대역폭은 제한적
TCP 헤더 | 데이터 | ||||||||||
출발지 포트 번호 16비트 |
목적지 포트 번호 16비트 |
일련 번호 32비트 |
확인 응답 번호 32비트 |
헤더 길이 4비트 |
예약 영역 6비트 |
코드 비트 6비트 |
윈도우 크기 16비트 |
체크섬 16비트 |
긴급 포인터 16비트 |
옵션 |
b. 3-way 핸드셰이크
b-1. TCP 헤더 중 코드비트
- TCP 헤더 중 코드비트 : 연결의 제어정보가 기록되는 곳
- 초기값은 0, 비트 활성화 시 1
b-2. 연결을 확립하려면 SYN과 ACK 필요
- SYN은 연결 요청, ACK는 확인 응답
- 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷 교환
- 과정과 코드 값
- SYN=1, ACK=0 : 통신 하려면 컴퓨터에게 허가를 받아야하므로 클라이언트에서 컴퓨터로 연결 확립 허가를 받기 위한 요청
- SYN=1, ACK=1 : 컴퓨터는 클라이언트가 보낸 요청을 받은 후 허가한다는 응답을 회신하기 위해 연결 확입 응답을 보내는 동시에 컴포터도 클라이언트에게 데이터 전송 허가를 바기 위해 연결 확립 요청 보냄
- SYN=0, ACK=1 : 컴퓨터의 요청을 받은 클라이언트는 컴퓨터를 허가한다는 응답으로 연결 확립 응답 보냄
- 3-way 핸드셰이크
- 3-way 핸드셰이크 : 데이터 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것
- 연결을 맺기 위한 3단계의 초기화 과정
- 확실하게 데이터가 전송되었는지 확인하면서 이루어지는 통신 수단
- TCP 통신에서 사용하는 신뢰성 제공하기 위한 통신 방식
b-3. 연결 끊는 것은 FIN과 ACK 사용
- FIN은 연결 종료
- 과정과 코드 값
- FIN=1, ACK=0 클라이언트에서 서버로 연결 종료 요청
- FIN=0, ACK=1 서버에서 클라이언트로 연결 종료 응답 반환
- FIN=1, ACK=0 서버에서 클라이언트로 연결 종료 요청
- FIN=0, ACK=1 클라이언트에서 서버로 연결 종료 응답 반환
3. 일련번호와 확인 응답 번호의 구조
a. 일련번호와 확인 응답 번호란?
a-1. TCP 헤더의 일련번호와 확인 응답 번호
- 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호와 확인 응답 번호 사용
- 일련번호 : TCP가 데이터를 분할해서 보낼 때 송신측에서 수신측에 데이터가 몇번째 데이터인기 알려주는 역할
- 전송된 데이터에 일련번호를 부여하면 수신자는 몇번째 데이터인지 확인 가능
- 확인 응답 번호 : 수신측이 몇번째 데이터를 수신했는지 송신측에 알려주는 역할
- 확인 응답 : 10번째 데이터를 수신하면 11번 데이터를 송신측에 요청
- 일련번호 : TCP가 데이터를 분할해서 보낼 때 송신측에서 수신측에 데이터가 몇번째 데이터인기 알려주는 역할
a-2. 예시
- 일련번호 3001번은 지금 보내는 200바이트 데이터의 첫번째 바이트 번호
- 확인 응답 번호는 다음에 보냈으면 하는 데이터의 첫번째 바이트 번호
- 데이터 전송 전 단계에서 3-way 핸드셰이크로 연결 수립이 이뤄질때 이번 통신에 사용하는 일련번호 3001번과 확인 응답 번호 4001번 결정
- 1. 컴퓨터 1은 컴퓨터 2로 200바이트의 데이터 전송
- 2. 컴퓨터 2는 200바이트 수신 후 다음에 수신하고자하는 데이터 번호를 확인 응답 번호에 넣음
- 3. 컴퓨터 1은 컴퓨터 2로 3201번부터 200바이트의 데이터 전송
- 4. 컴퓨터 2는 200 바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣음
a-3. 재전송 제어
- 재전송 제어 : 데이터가 항상 올바르게 전달되는 것이 아니기 때문에 일련번호와 확인 응답 번호 사용해 데이터가 손상되거나 유실된 경우 데이터 제전송하는것
- 데이터 전송 중 오류 발생 시 일정 시간동안 대기 후 재전송
b. 윈도우 크기란?
b-1. 세그먼트 하나? 여러개?
- 세그먼트 하나를 보낼때마다 확인 응답을 한번 반환하는 통신은 효율 낮음
- 세그먼트 연속으로 보내고 확인 응답 반환하면 효율 높아짐
b-2. 버퍼와 오버플로
- 버퍼 : 받은 세그먼트를 일시적으로 보관하는 장소
- 오버플로 : 수신측에 대량으로 데이터가 전송돼 보관하지 못하고 넘치는 것
- 오버플로가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야함
b-3. TCP 헤더의 윈도우 크기
- TCP 헤더의 윈도우 크기 : 얼마나 많은 용량의 데이터를 저장할 수 있는지 나타냄
- 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기
- 3-way 핸드셰이크를 할 때 윈도우 크기를 확인 후 초기값 설정
b-4. 세그먼트 연속 전송
- 세그먼트 하나를 보내고 확인 응답을 기다리다가
- 버퍼를 이용해 세그먼트를 연속해서 보내고 확인응답을 연속으로 받음
4. 포트번호의 구조
a. 포트 번호란?
- TCP 헤더의 출발지 포트번호와 목적지 포트 번호를 통해 목적지가 어떤 애플리케이션인지 구별함
- 포트번호는 0~65535번 사용
- 0~1023번 : 잘 알려진 포트 : 주요 프로토콜이 사용, 서버측 애플리케이션에서 사용
- 1024 : 예약되어있지만 사용되지 않는 포트
- 1025~65535 : 랜덤포트 : 클라이언트 측의 송신 포트
애플리케이션 | 포트번호 |
SSH | 22 |
SMTP | 25 |
DNS | 53 |
HTTP | 80 |
POP3 | 110 |
HTTPS | 443 |
- 애플리케이션은 각각 포트번호가 있어 다른 애플리케이션과 구분 됨
- 데이터 전송 시 상대방의 IP 주소가 필요하지만 어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트 번호 필요
- 포트 번호 없이 통신 시 컴퓨터에 데이터 도착하더라도 애플리케이션까지 도착할 수 없음
- 웹브라우저로 접속할 때 웹브라우저에는 임의의 포트가 자동 할당 됨
- 서버측은 포트 번호를 정해둬야하지만 클라이언트 측은 정하지 않아도 됨
5. UDP의 구조
a. UDP란?
- 비연결형 통신으로 데이터 전송할 때 확인 작업을 일일이 하지 않음
- 데이터를 효율적으로 빠르게 보내기 때문에 스트리밍 방식으로 전송하는 동영상 서비스에 사용
- 연결 맺을 필요가 없고 정보 보내거나 받는다는 신호도 불필요
b. UDP 헤더란?
b-1. UDP 데이터 그램과 UDP 헤더
- UDP 데이터 그램 : UDP헤더가 붙은 데이터
- UDP 헤더 : 올바른 목적지의 애플리케이션으로 데이터 전송하기 위해 필요한 정보 기록
UDP 헤더 | 데이터 | |||
출발지 포트 번호(16비트) | 목적지 포트 번호(16비트) | 길이(16비트) | 체크섬(16비트) |
b-2. UDP는 효율성과 빠른 속도가 중요해서 상대방 확인하지 않고 연속해서 데이터 보냄
b-3. 브로드캐스트에는 UDP 사용
- 브로드캐스트 : 네트워크의 모든 컴퓨터와 장비에 같은 패킷 일괄 전송하는 방식
- UDP 사용해 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내는 것 가능
- TCP는 데이터 전송할 때 확인 응답을 하나씩 보내야하기 때문에 불특정 다수에게 보내는 통신에는 부적합
참고 자료
모두의 네트워크 책
728x90
'개념 정리 > CS' 카테고리의 다른 글
네트워크 : 네트워크의 전체 흐름 살펴보기 (0) | 2023.11.20 |
---|---|
네트워크 : 응용계층 : 애플리케이션에 데이터 전송하기 (1) | 2023.11.20 |
네트워크 : 네트워크 계층 : 목적지에 데이터 전달하기 (0) | 2023.11.18 |
네트워크 : 데이터 링크 계층 : 랜에서 데이터 전송하기 (1) | 2023.11.13 |
네트워크 : 물리계층 : 데이터를 전기신호로 변환 (0) | 2023.11.07 |