애니리뷰

네트워크 5) 4계층(Transport Layer)

두원공대88학번뚜뚜 2022. 4. 16. 19:52

1. 4계층의 역할과 개요

1계층 - 케이블이 연결된 상대에 대한 신호 전달

2계층 - 신호를 주고받을 수 있는 상태일 때, 세그먼트 내에서 어떻게 데이터를 송수신하는가

3계층 - 세그먼트=네트워크 사이에서 어떻게 송수신하는가(ex. IP주소, 라우팅)

4계층 - 전달할, 전달될 데이터에 대해 필요한 처리. 예로, 에러 복구

 

[흐름제어: 에러복구 & 통신상태 확인]

데이터 수신 시, 송신처에 수신한 것을 통지.

이 확인응답이 돌아오지 않으면, 다시 보냄.

처리능력을 넘어선 정보를 받은 경우, 이를 파기하는 경우가 있다. 이러한 오버플로우를 방지하기에, 흐름제어.

 

데이터를 보내거나 받는 건, 결국 어플리케이션, 어느 어플리케이션이 송신하고 수신한 건지 결정하기 위해, 포트번호가 부여됨. 이러한 '통신에 필요한 처리'를 수행하는 것이 TCP/IP, UDP


2. 커넥션과 세그먼트

TCP에서 만들어진 통신로는 '가상적 통신로'로, 데이터전송을 시작하기 전, 미리 확인을 주고받아둔다.

이 커넥션 확립엔 20옥텟의 TCP헤더가 요구된다.

TCP는 어플리케이션으로부터 받은 데이터(메시지)를 세그먼트로 캡슐화한다.

이 캡슐화는 한 개의 데이터를 MSS(Max Segnet Size)로 분할하며, 이거 각각에 시퀀스번호라 하는 번호를 부여.

 

[TCP 헤더]

송신처 포트번호(16비트) 수신처 포트번호(16비트)
시퀀스 번호(3비트)
확인응답 번호(32비트)
데이터 오프셋(4비트) 예약 (6비트) 플래그(6비트) 윈도우(16비트)
체크섬(16비트) 긴급포인터(16비트)

 

TCP에선, 같은 데이터에 대한 ACK가 3번 이상 오면, 타임아웃이 되지 않아도, 2번째 패킷 loss가 되었다 생각하고 처리

 

TCP헤더의 congestion control : AIMD, 패킷을 하나씩 증가시키며 깎을 땐 왕창

르노(RENO): CWND(congestion window size)를, 패킷손실 발생할 때까지 그 윈도우크기를 2배로 증가시킴. 패킷손실 발생시엔 1/2로.

타호 : CWND를 1로 시작. 패킷 전송량을 expotential하게 증가시킴. Threshold에 도달할 때 다시 linear하게 증가시킴.

 


3. 윈도우 제어

시퀀스 번호 - 보내는 데이터의 앞 부분의 옥텟 번호

확인응답 번호 - 다음에 받고픈 데이터의 선두옥텟 번호

즉, 이번에 보낼 것과 다음에 받고픈 것을 다 보냄.

 

에러가 발생해 데이터가 도달하지 않는 그 기준은 RTT가 되며, 

이러한 세그먼트 송신 - 확인응답은 시간이 오래 걸린다.

따라서, 복수의 세그먼트 송신 - 확인응답 형태로 바뀌게 됨.

 

윈도우제어는 일단 수신한 데이터를 일시적으로 보관하기 위한 버퍼가 존재.

TCP는 오버플로 방지를 위해, 상대방에게 자신이 얼마나 버퍼량을 갖고 있는지도 알려줌.

윈도우사이즈(버퍼량이 얼마인지)를 알려줌으로써, 그만큼의 데이터를 한번에 보내도 오버플로가 되지 않는다고 알려줌.


4. 포트 번호

상술한 포트번호는, 각 애플리케이션과 연결되는 가상의 줄입구.

데이터를 보내고픈 어플리케이션의 포트번호를 알 순 없으며,

자주 사용하는 서버애플리케이션은 사전에 정해진 번호를 사용함으로써 서비스를 제공토록 함.

이 서버애플리케이션에는 웰노운포트라고 하는, 사전에 저애진 번호가 존재.


5. UDP

TCP는 정확하기에, 기다려야 함. UDP헤더는 포트번호 이외에는 아무것도 없으며, 시퀀스번호 & 확인응답번호 & 윈도우 사이즈 & 제어비트가 없다.

송신처 포트번호(16비트) 수신처 포트번호(16비트)
페이로드 사이즈(16비트) 체크섬(16비트)

고속이기에, 브로드캐스트 & 스트리밍에 적합하다.

TCP는, 상대를 잘 알아야 하고, 커넥션을 확립해야 하며, 각각에 사용하는 버퍼가 필요하기에, 이에 적합하지 않다.

상대방이 있는지 없는지 모르는 DHCP(3강 참조)는, 그 DHCP서버를 찾아내는 것이기에 TCP사용이 불가.

 

체크섬은, 16비트의 정수를 다 더한 값의 1의 보수.

리시버는 이 segment를 받으면, 1의 보수와 정수를 다 더하여, 전부 1이 나오면 올바르게 들어 것. 아니면 오류온것.

 

GBN(Go Back-N) : n개의 패킷을, 어떤 ack신호가 오면 그 위의 패킷이 다 success하다 가정, timer는 가장 오래된 패킷 1개만 필요. Moving Window에서, 윈도우 내의 어떤 비트에 대한 ack신호가 오면 그 전의 것을 다 받았다 가정.

Selective Repeat : GBN은, 중간에 ACK신호 하나가 날아가면 그 뒤에 잘 받은 것도 날아감. 즉, 패킷 하나하나에 타이머를 붙여 이를 방지.


6. 네트워크 주소 변환

인터넷에 연결하지 않는다는 조건 하의 사설IP주소가 존재한다. 

IP주소의 개수인 2^32로 부족하며, 이를 해결하기 위해 IPv6과 클래스리스 어드레싱, 그리고 네트워크주소변환(NAT)가 존재한다.

 

클래스A 사설IP 주소 : 10.0.0.0

00001010 xxxxxxxx xxxxxxxx xxxxxxxx

클래스B 사설IP 주소 : 172.16.0.0 ~ 172.31.0.0

10101100 0001xxxx xxxxxxxx xxxxxxxx

클래스C 사설IP 주소 : 192.168.0.0 ~ 192.168.255.0

11000000 10101000 xxxxxxxx xxxxxxxx

 

내부네트워크에서는, 내부 네트워크에서 TCP/IP를 사용한 통신을 할당하기 위해 사설IP주소를 할당.

이후에, 인터넷에 다시 보내기 위해선 글로벌IP로 다시 바꾼다.

1) 내부네트워크(사설IP주소로 할당받은 상태)에서 인터넷(글로벌IP주소가 필요)에 송신.

송신처 IP 주소 수신처 IP 주소 데이터
192.168.0.1 1.0.0.1

라우터에선, ICANN과 하부조직에 의해 조직용으로 글로벌IP주소(200.100.10.1 ~ 15)가 주어진 상태.

 

2) 라우터는 NAT를 수행해, 송신처IP주소의 사설IP주소를 글로벌IP주소로 변경해서 인터넷수신처에 보낸다.

이를 NAT테이블에 저장한다.

변경된 송신처 IP 주소 수신처 IP 주소 데이터
200.100.10.5 1.0.0.1

 

3) 수신받은 인터넷에 있는 서버는 응답을 한다. 이 때 수신처는, 변환후의 글로벌IP주소.

송신처 IP 주소 변경된 수신처 IP 주소 데이터
1.0.0.1 1200.100.10.5

 

4) 패킷을 수신한 라우터는 NAT테이블에 따라 수신처IP주소를 사설IP주소로 변경해 내부 네트워크에 송신.

NAT테이블은 일정시간 후 파기

송신처 IP 주소 수신처 IP 주소 데이터
192.168.0.1 192.168.0.1

 

그러나 사설IP주소와 글로벌IP주소는 1대1대응해야 하기에, 보유하는 글로벌IP주소수 이상의 호스트는 인터넷에 동시접속이 불가하다.

NAT에서 변환되는 주소는 유일해야 하며, 이에 NAPT로 발전된다.


7. NAPT - 하나의 글로벌 IP주소로 복수의 컴퓨터를 접속 가능케 함.

이는, 포트번호를 변환하는 방식으로 가능케 함.

1) NAPT는, IP주소와 함께 포트번호를 변환 후, NAT테이블에 기재.

2) 응답의 경우, IP주소와 포트번호를 NAT테이블에서 확인 후, IP주소와 포트번호를 변환. 


8. 5~7계층

1계층 - 케이블에 신호 전달

2계층 - 네트워크 내에서 데이터 주고받기

3계층 - 네트워크 간 데이터를 주고받기(데이터가 수신처 컴퓨터에 도달)

4계층 - 어떻게 해야 확실하게 데이터를 전달하는지, 그 구조 & 애플리케이션 식별(by port)

5~7계층 - TCP/IP에서는 하나의 계층으로 취급되는, 애플리케이션 층. HTTP, FTP 등 프로토콜 존재.

 

5계층(세션) : 애플리케이션 간 의논을 통해, 사용자인증/파일교환/교환후 디렉토리 정보... 등을 함.

즉, 데이터 전송을 준비한다, 패스워드를 보낸다 등의 말을 주고받음으로써 대화를 성립시킴

 

6계층(표현) : ASCII, EBCDIC 등에서 사용하는 데이터 형식은 다름. 이를 6계층에서 변환함으로써, HW나 OS에 따른 차이를 없앤 데이터교환을 가능케 함 & 압축, 암호화 실행

 

7계층(응용) : 네트워크 서비스를 제공. 애플리케이션이 각 목적에 따라 사용할 프로토콜을 결정(예. 홈페이지 열람은 HTTP, 파일전송은 FTP...)

서비스 웹사이트 열람(WWW) 파일전송 메일전송
애플리케이션 브라우저 FTP 클라이언트 메일 클라이언트
7계층 HTTP FTP SMTP
4~1계층 TCP/UDP, IP, 이더넷

 


9. OSI 참조모델과 요약

5~7계층 : 4계층 이하의 기능에서 애플리케이션 별로 도달할 데이터를 처리.

응용 : 네트워크 서비스

표현 : 데이텨 형식

세션 : 세션 관리.

 

4계층 :

TCP/UDP로, 3계층 이하의 기능으로 컴퓨터에 도달한 데이터에 대해, 신뢰성이 높은 데이터통신을 5계층에 제공.

애플리케이션을 식별하고, 각각에 대해 신뢰성이 있다/없다를 TCP/UDP에 따라 제공. 

이 때의 식별=포트번호. 

에러 복구 및 신뢰성 높은 통신 보증.

  • TCP: 에러 복구, 윈도우 제어 등으로 세그먼트 손실 방지
  • UDP: 복잡한 제어가 없기에, 고속통신, 멀티캐스트, 브로드캐스트 통신 가능케 함.
  • 포트 번호: 통신하는 애플리케이션 지정하는 번호

 

3계층 :

2계층 이하의 기능에서 케이블에 접속된 기기 간의 데이터통신을 이용, 네트워크 간의 접속을 4계층에 제공(인터넷 작업). IP주소, 라우팅 등. 네트워크 사이에서 패킷을 송수신하기 위한 순서.

4계층은 3계층에 의해, 서로 다른 네트워크 간에도 데이터전송이 가능케 됨.

3계층은 2계층 네트워크 내에서의 기기간 데이터전송을 통해 네트워크 간의 접속을 수행.

  • IP 주소: 네트워크 번호와 호스트 번호의 조합. 서브네트워크화 가능, MAC과 IP의 대응을 수행하기 위해 ARP 수행.
  • 라우팅: 네트워크 경계상 라우터가 수신처 IP주소로부터 다음송신처 결정 후, 네트워크 통해 수신처까지 도달.

 

2계층 :

1계층의 기능에서의 전기적 데이터를 사용, 서로 다른 기기의 데이터송수신을 3계층에 제공(이더넷)

직접적인 데이터 전송을 수행 by CSMA/CD.

1계층의 전기신호 흐름에 있어 충돌이 발생하지 않도록 효율적 운영 & 네트워크 내의 데이터전송을 3계층에 제공.

  • MAC주소에 의해 수신처를 지정.
  • CSMA/CD나 스위치를 통한 전이중 이더넷으로 충돌을 막고, 수신처까지 프레임 보냄.

 

1계층 :

전기, 신호(케이블, 신호) 담당. 

허브를 통해 케이블 분배, 더 많은 컴퓨터 간의 송수신 가능케 함.