전송 계층 / 연결형 / 비연결형 / TCP / 대역폭 / UDP / 3-way 핸드셰이크 / 잘 알려진 포트 / 브로드캐스트 / 일련번호 / 포트 번호
1. 전송 계층의 역할
1-1. 전송 계층의 두 가지 역할
네트워크 계층에서 라우터의 라우팅을 통해 데이터를 전송하더라도 목적지에 도착하지 못하는 경우.
▶ 물리 계층, 데이터 링크 계층, 네트워크 계층의 3계층이 있으면 목적지에 데이터를 보낼 수 있지만 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해주지 않음
따라서, 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요
역할 1. 오류 점검 기능 : 오류가 발생하면 데이터를 재전송하도록 요청함
역할 2. 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별 (웹에 전달할까? 메일프로그램에 전달할까?)
1-2. 연결형 통신과 비연결형 통신
전송 계층의 특징을 간단히 설명하면 신뢰성/정확성과 효율성으로 구분
신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것 ▶ 연결형 통신 (신뢰할 수 있고 정확한 데이터 전달하는 통신)
효율성 : 데이터를 빠르고 효율적으로 전달하는 것 ▶ 비연결형 통신 (효율적으로 데이터를 전달하는 통신)
연결형 통신은 상대편과 확인해 가면서 통신하는 방식이고(신뢰성,정확성이 우선),
비연결형 통신은 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식(효율성 우선) → 동영상 전송시 사용되는 방식(빠른 전송이 중요)
전송 계층의 연결형 통신 프로토콜에는 TCP가 사용되고, 비연결 통신 프로토콜에는 UDP가 사용 됨
TCP ; Tranmission Control Protocol, 전송 제어 프로토콜
UDP ; User Diagram Protocol,
2. TCP 구조
2-1. TCP
TCP 헤더 : TCP로 전송할 때 붙는 헤더
TCP 헤더에는 11개의 정보가 나열되어 있음
세그먼트(segment) = TCP 헤더가 붙은 데이터
연결형 통신에서 데이터를 전송하기 전에 연결(connection) 이라는 가상의 독점 통신로를 확보해야 함
코드비트 : TCP 헤더의 107번째 비트부터 112번째 비트까지의 6비트로 연결 제어 정보가 기록되는 곳
초깃값은 0이고 비트가 활성화 되면 1이 됨.
연결을 확립하려면 SYN(연결 요청)과 ACK(확인 응답)가 필요
2-2. 3-way 핸드셰이크
연결(connection)은 SYN 과 ACK를 사용하여 확립할 수 있음. 신뢰할수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환하는데, 세 번 확인 함 ▶ 3-way handshake
- 통신을 하려면 컴2에 허락을 받아야 하므로, 먼저 컴1에서 컴2로 연결 확립 허가를 받기 위한 요청(SYN)을 보냄
- 컴2는 컴1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)를 보냄.
동시에 컴2도 컴1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보냄 - 컴2의 요청을 받은 컴1은 컴2로 허가한다는 응답으로 연결 확립(ACK)를 보냄
연결을 끊을 때는 FIN(연결 종료) 과 ACK를 사용
3. 일련번호와 확인 응답 번호의 구조
3-1. 일련번호와 확인 응답 번호
3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대바잉 받을 때는 TCP 헤더의 일련 번호(sequence number)와 확인 응답 번호 (acknowledgement number)를 사용
TCP는 데이터를 분할해서 보내는데, 일련번호는 송신 측에서 수신 측에 '이 데이터가 몇 번째 데이터인지' 알려 주는 역할을 함.
전송된 데이터에 일련번호를 부여하면 수신자는 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있음
확인 응답 번호는 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 함.
따라서 이 번호는 다음 번호의 데이터를 요청하는 데도 사용 ( 10번 데이터를 수신하면 11번 데이터를 송신 측에 요청)
일련번호 3001번은 지금 보내는 200바이트 데이터의 첫 번째 바이트 번호.
확인 응답 번호는 다음에 보냈으면 하는 데이터의 첫 번째 바이트 번호
- 컴1은 컴1로 200바이트 데이터를 전송
- 컴2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터 번호를 확인 응답 번호에 넣음
다음에 수신하고자 하는 데이터는 3001+200 = 3201이므로 3201번부터 보내 달라고 요청 - 컴1은 컴2로부터 3201번 부터 200바이트의 데이터 전송
- 컴2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣음
다음에 수신하고자 하는 데이터는 3201 + 200 = 3401 이므로 3401번부터 보내 달라고 요청
데이터가 항상 올바르게 전달되는 것은 아니므로 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하게 되어 있음 = 재전송 제어
(데이터를 전송하는 도중 오류가 발생하면 일정 시간 동안 대기한 후에 재전송)
3-2. 윈도우 크기
위의 내용처럼 세그먼트(데이터) 하나를 보낼 때 마다 확인 응답을 한 번 반환하는 통신은 효율이 높지 않음
세그먼트를 연속으로 보낸 후 확인 응답을 반환하면 효율이 높아짐
버퍼(buffer) : 받은 세그먼트를 일시적으로 보관하는 장소
오버플로(overflow) : 수신 측에 대량으로 데이터가 전송되면 다 보관하지 못하고 넘치는 현상
따라서, 오버플로가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야 함 = TCP 헤더의 윈도우 크기 값
윈도우 크기 : 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지 나타냄. 즉, 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기
상대 컴퓨터 버퍼의 한계를 알았으니 세그먼트(데이터)를 오버플로되지 않도록 연속해서 송신할 수 있음
4. 포트 번호의 구조
4-1. 포트 번호(port number)
연결 확립, 재전송 제어, 윈도우 제어와 같은 기능들로 인해 TCP는 데이터를 정확하게 전달할 수 있게 됨
그 외에 전송 계층에는 데이터의 목적지를 구분하는 역할이 있음
TCP 헤더의 출발지 포트 번호와 목적지 포트번호가 필요함 => 데이터가 송신되는 애플리케이션 구분할 수 있음
포트번호는 0 ~ 65535 번을 사용할 수 있음
0~1023 는 주요 프로토콜이 사용하도록 예약 되어 있음 = 잘 알려진 포트 (well-known ports)
1024는 예약 되어 있지만 사용하지 않는 포트
1025~65535 는 랜덤 포트. 클라이언트 측의 송신 포트로 사용 됨
애플리케이션이 한 아파트에 사는 주민 A씨와 B씨라면, 포트 번호는 각 방(집)의 번호
서버 주요 포트 번호
SSH(22), SMTP(25), DNS(53), HTTP(80), POP3(110), HTTPS(443)
데이터를 전송할 때는 상대방의 IP 주소가 필요하지만, 어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트 번호가 필요. 포트번호가 없으면 컴퓨터에 데이터가 도착해도 애플리케이션으로 도착할 수 없음
5. UDP의 구조
5-1. UDP
비연결 통신으로 데이터를 효율적으로 보내는 스트리밍 방식을 사용. ( 동영상 전송 )
5-2. UDP 헤더
UDP 데이터 그램 : UDP 헤더가 붙은 데이터
상대방을 확인하지 않고 연속해서 데이터 보냄
또한 UDP를 사용하면 같이 LAN에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내줄 수 있음 = 브로드캐스트(braodcast)
TCP는 브로드캐스트와 같은 불특정 다수에게 보내는 통신에는 적합하지 않음
'🏷️CS > Network' 카테고리의 다른 글
[네트워크] 네트워크 전체 흐름 (0) | 2023.07.07 |
---|---|
[네트워크] 응용 계층 : 애플리케이션에 데이터 전송하기 (0) | 2023.07.07 |
[네트워크] 네트워크 계층 : 목적지에 데이터 전달하기 (0) | 2023.07.02 |
[네트워크] 데이터 링크 계층 : 랜에서 데이터 전송 (0) | 2023.07.02 |
[네트워크] 물리 계층 : 데이터를 전기 신호로 변환 (0) | 2023.07.01 |