maroo25 / self-learning-network

2 stars 0 forks source link

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

Open won-Yi opened 1 year ago

won-Yi commented 1 year ago
image

네트워크계층이 목적지까지 데이터를 전달하는 것이라면 전송계층은 데이터가 제대로 도착했는지 확인하는 과정. 전송계층에는 오류를 점검하는 기능과 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능이 있다.

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

연결형 = TCP (Transmission Control Protocol) 비연결형 = UDP (User Datagram Protocol)

image

TCP는 신뢰성/정확성을 기반으로 데이터를 목적지에 문제 없이 전달하는 것이 특징 UCP는 효율성을 기반으로 데이터를 빠르고 효율적으로 전달하는 것. (게임이나 스트리밍서비스에서 이용)


TCP의 구조

image

TCP로 전송할 떄 붙이는 헤더를 TCP헤더라고 한다. TCP헤더가 붙은 데이터를 세그먼트라고 한다.

SYN 과 ACK

TCP로 데이터를 전송하기 위해서는 연결이라는 가상의 독점 통신회로를 확보해야한다. 헤더의 7번째(코드비트) 부분을 보면 6비트로 연결제어 정보가 들어있다.

image

코드비트는 각 비트별로 역할이 있고 초깃값은 0. 만약 활성화가 된다면 1이 된다. 서로 연결을 확립하려면 이중에서 SYN과 ACK가 필요. SYN = 연결요청. ACK = 확인응답.


3-way 핸드셰이크

3-way 핸드셰이크란 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 말한다.

image

그림과 같이 데이터를 주고 받으면 각 부분이 활성화 된다.

image

** FIN과 ACK는 연결을 끊을떄 사용된다. SYN과 ACK처럼 각각의 코드비트가 1로 활성화 된다.


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

3-way 핸드셰이크가 끝나고 실제로 데이터를 주고 받을떄에 TCP헤더의 3.일련번호와 4.확인 응답 번호를 사용한다.

image

일련번호는 송신측에서 수신측에게 '이 데이터가 몇 번째 데이터'인지 알려주는 역할 확인 응답 번호는 수신 측이 '몇 번째 데이터'를 수신했는지 송신측에 알려주는 역할

image

일련번호 3001번은 200바이트 데이터의 첫번째 바이트 번호이고, 확인 응답 번호는 다음에 보냈으면 하는 데이터의 첫번쨰 번호. 컴퓨터가 200바이트의 데이터를 전송하면 그 다음 수신하고자 하는 데이터는 3001 + 200을 해서 3201이 되고 그 다음은 3201+200이 되어 3401이 된다.

확인응답 번호는 4001번.


윈도우 크기

통신을 한번 보낼때마다 응답을 반환하는 방식은 비효율적이므로 응답을 기다리는 동안 세그먼트를 연속으로 보낸다음 응답을 반환하면 더욱 효과적이다. 이때 수신측의 윈도우 크기를 고려하지 않고 세그먼트를 보내면 overflow가 발생한다. 윈도우 크기는 8번 윈도우 크기를 통해 알 수 있다.

image

포트 번호의 구조

image

전송계층에서 전송된 데이터의 목적지가 어떤 애플리케이션(웹 브라우저나 메일 프로그램)인지 구분하기 위해 포트번호가 필요하다.

image

위의 표처럼 애플리케이션마다 포트번호가 있다.


UDP의 구조

UDP통신 방식은 효올성을 기반으로 하는 비연결형 방식의 프로토콜이다. TCP방식과는 다르게 데이터를 전송할 때 시간이 걸리는 확인 작업을 일일히 하지 않는다. 대신 정확성이 떨어진다.

image

UDP는 같은 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다 이것을 브로드캐스트(Broadcast)라고 한다. TCP처럼 목적지를 지정하지 않으면 데이터를 전송할 수 없는 것과 다르게 UDP는 목적지 관계없이 데이터를 일괄적으로 보낼 수 있는 것도 둘의 차이.

DarrenKwonDev commented 1 year ago

reliable udp