[CS-network] 모두의 네트워크 제 6장 (Lesson 23~27)

sing sang song·2022년 11월 18일
0

CS-네트워크

목록 보기
6/9
post-thumbnail

전송계층 : 신뢰할 수 있는 데이터 전송하기

전송계층의 역할

  • 목적지에 신뢰할 수 있는 데이터를 전달하기 위한 역할을 담당
  • 오류를 점검하는 기능
  • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능

연결형 통신과 비연결형 통신

  • 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신(상대편과 확인해가며 통신하는 방식)
    • 연결형 통신 프로토콜 : TCP
  • 비연결형 통신 : 효율적으로 데이터를 전달하는 통신(상대방을 확인하지 않고 일방적으로 데이터를 전송하는 방식, ex) 동영상)

    - 비연결형 통신 프로토콜 : UDP

    신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것

    효율성 : 데이터를 빠르고 효율적으로 전달하는 것

TCP의 구조

TCP란?

연결형 통신 프로토콜

  • TCP 헤더 : TCP로 전송할 때 붙이는 헤더
  • 세그먼트 : 헤더가 붙은 데이터
  • 연결(connection, 커넥션) : TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로

TCP 헤더

TCP 헤더는 총 20바이트의 크기이며 다음과 같은 구조로 되어있다.
image


코드비트는 각 비트별로 역할이 있으며 이중 SYN, ACK가 연결과 관련된 비트이다.

SYN --> 연결요청, ACK --> 확인응답, FIN --> 연결종료

3-way, 4-way 핸드셰이크

3-way 핸드셰이크(연결)

연결은 SYN, ACK를 사용해서 확립한다.<br>
신뢰할 수 있는 연결을 위해 데이터를 전송하기전에 패킷을 교환하는데 다음과 같이 세 번 확인한다.

image
1. 연결하고자하는 두 대의 컴퓨터 주 한 대에서 최초 연결요청
2. 나머지 컴퓨터에서 확인응답 및 연결요청
3. 처음 한 대의 컴퓨터에서 다시 확인응답

4-way 핸드셰이크(연결종료)

연결종료는 FIN, ACK를 사용한다.
역시 패킷을 교환하며 네 번 확인한다.

image

일련번호와 확인 응답 번호의 구조

일련번호, 확인 응답 번호

3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 받을 때는 TCP 헤더의 일련번호와 확인 응답 번호를 사용한다.
  • 일련번호 : 이 데이터가 몇 번째 데이터인지 알려주는 역할을 한다.(송신측 --> 수신측)

  • 확인 응답 번호 : 몇 번째 데이터를 수신했는지 알려주는 역할을 하며 다음 번호의 데이터를 요청하는 데도 사용된다.(수신측 --> 송신측)

  • 재전송 제어 : 데이터가 항상 올바르게 전달되지 않기 때문에 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우 데이터를 재전송하는 것

윈도우 크기?

앞서 설명한 것은 세그먼트(데이터) 하나를 보낼 때 마다 확인 응답을 한번 반환하는 통신이다.
효율을 높이기 위한 방법으로 매번 확인 응답을 기다리는 대신 세그먼트를 연속해서 보내고 난 후 확인 응답을 반환하는 방식을 사용하고자 하였다.
  • 버퍼(buffer) : 세그먼트를 일시적으로 보관하는 장소

  • 오버플로우(overflow) : 수신 측에 대량의 데이터가 전송될 경우 보관의 한계를 넘어선 경우

    따라서 오버플로우를 발생시키지 않도록 버퍼의 한계 크기를 알고있어야 하며 그것이 TCP 헤더의 윈도우 크기 값에 해당한다.
    윈도우 크기란 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다. 윈도우 크기의 초깃값은 3-way 핸드셰이크를 할 때 판단한다.

포트 번호의 구조

포트 번호란?

전송 계층의 역할 중 목적지가 어떤 어플리케이션인지 구분하는 역할이 있는데 이를 위해 출발지 포트 번호, 목적지 포트 번호가 필요하다. 
이 값들 역시 TCP 헤더에 포함되어 있다.
0~1023번 포트는 주요 프로토콜이 사용하도록 예약되어 있으며 잘 알려진 포트(well-known ports)라고 한다.
1024번은 예약되어 있지만 사용되지 않는 포트, 1025번 이상은 랜덤 포트라고 해서 클라이언트 측의 송신 포트로 사용한다.
애플리케이션포트번호
SSH22
SMTP25
DNS53
HTTP80
POP3110
HTTPS443

포트 번호를 붙이지 않고 통신하면 다른 컴퓨터에 데이터가 도착하더라도 어플리케이션까지는 도착할 수 없다.

UDP의 구조

UDP란?

비연결형 통신으로 TCP처럼 번거로운 확인과정을 거치지 않고 효율성을 중요시하는 프로토콜이다. 
UDP의 장점은 데이터를 효율적으로 빠르게 보내는 것! 동영상 스트리밍과 같은 서비스에서 주로 사용된다.

UDP 헤더란?

UDP에서는 UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.

image

신뢰성과 정확성이 필요하지 않기 때문에 TCP 헤더에 비해 적은 정보를 필요로한다. 
또한 UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있고 이를 브로드캐스트(broadcast)라고 한다.
(목적지에 관계없이 랜에서 일괄적으로 송신)
profile
세상을 선명하게

0개의 댓글