본문 바로가기
컴퓨터공학/컴퓨터네트워크

11. 전송 계층

by meow0110 2024. 7. 7.

 

■ 개념

- connection- orented communication : 물리적으론 커넥션레스. 하지만 소프트웨어적으로 오리엔티드된(연결) 써킷이 연결된것처럼 해줌.

- 신뢰성 = 안정성. 연결에 대해서 믿을 수 있음. 상대방과의 연결을 계속 체크함.

- flow control : 오류, 경로 찾기 등을 담당. 오류를 좀 더 체크!

- multiplexing : 운영체제 하나가 여러 개의 앱을 동시에 동작할 떄, 상대방한테 오는 데이터를 어떻게 분배할 것이냐? 즉, 여러개의 어플리케이션이 어떤식으로 내가 제공하는 서비스, 내가 보낸 문서에 대한 응답인지를 구별할 것이냐에 집중함. (2계층의 멀티플렉싱과는 결이 다르다 정도로 이해하자.)

 

■ Transport Layer
- Virtual circuit 형성
- 신뢰할 수 있는 데이터 송수신을 담당

 

■ data stream

- 우리가 보기에 한 덩어리의 데이터를 말함

- 논리적으로 하나의 덩어리

 

■ datagrams

- 데이터(통째)를 보낼 때의 문제를 해결하기 위해 쪼개놓은 것.

- 전송에 적합하게 쪼갬.

 

■ Connection-oriented
- Packet switch network에서 data stream 형성
- 일련 번호 사용

 

■ 위 그림 설명

- 데이터 4 3 2 1 보냄.

- 근데 R1이 데이터를 받을 때, 4 3 2 1 데이터가 전부 다 와야함.

- 마찬가지로 R1 >> R2로 보낼 떄도  4 3 2 1 모두 보내져야 R2는 R3로 보냄.

- 즉, 모든 데이터를 다 받아야 다음 라우터에 전송함. 이것이 커넥션 오리엔티드.

 

■ 정리

- 데이터가 쭈욱 온다? 그러면 data stream = 커넥션 오리엔티드

- 데이터가 쪼개서 온다? datagrams = 커넥션 레스 

 

 

■ 커넥션 레스 

- 데이터를 다 쪼개서 보냄. 4 3 2 1 데이터가 각자 다른 길로 감.

- 마지막에 오면 4 2 1 3 의 순서는 멋대로임.

- 다만 데이터는 잘 도착함. 순서대로 조립만 해주면 됨.

 

■ sequence number 에 주목하자

- 각각의 세그먼트가 쪼개져서 오면 일련번호가 붙어야 한다.

- 즉 헤더에는 시퀀스 넘버가 있어야 한다. 

 

■ Acknowledgment number 

- 제대로 받았는지, 오류가 있었느냐?

- 만약 오류가 있다면 구체적인 오류 내용을 어떤 번호를 갖고 주고 받게 함.

 

■ datagrams

- 데이터 스트림과는 다르게 '시퀀스 넘버'가 없다. 

- 데이터 스트림은 조합을 하는 것에 최종 목표가 있다. 하지만 데이터 그램은 신경 안쓴다.

 

■ 이 얘기 왜함?

- 데이터그램은 1,2,3계층에서의 데이터 모습이다. 

- 즉 데이터를 잘게 쪼개서 보낼 뿐, 순서따윈 없다.

- 그래서 앞서 봤던 4계층에서 시퀀스 넘버를 통해, 데이터의 순서를 알 수 있는 것이다.

 

 

■ 왜 커넥션 레스?

- 데이터 그램은 1,2,3계층으로 봐도 무방하다. 즉 1,2,3 계층에서는 데이터 순서? 난 몰라! 위에서 알아서 해주겠지 함.

- 그래서 데이터그램은 커넥션 레스다. 

- 이전 연결과 무관한 path로 전송 : 데이터그램은 보낼 때마다 다른 경로를 탐. 부산까지 경부고속도로? 난 다른길로 갈래!

 

■ 보장하지 않는거

- 전송 : 보냈다. 그러니 난 더 이상 신경 안써. 상대편 응답 안 기다릴거야. (반대로 데이터스트림은 응답을 기다림)

- 도착 시간 : 도착시간 보장안함. 왜? 난 보냈어. 신경 안쓸래

- 도착 순서 : 앞서 말햇듯 데이터그램은 1,2,3계층에서 보이는 형태다. 즉 4계층으로 올라가야 세그먼트의 시퀀스 넘버(순서)가 있다. 그래서 도착 순서에 대해 신경쓰지 않는다. 즉 데이터의 순서를 모른다 라고 봐도 무방하다.

 

 

■ 4계층이 커넥션 레스를  소프트웨어적으로 커넥션 오리엔티드로 포장해준다.

 

■ Virtual circuit 형성

- 물리적으로 연결된 건 아니다. 하지만 논리적으론 연결되었다. 

- 송신측에서 쪼갠 데이터(데이터그램)가 넘어오면, 순서가 엉망일것 같은데 라고 생각했지만. 아니다! 순서대로 잘 보내졌다. 

- 그래서 virtual circuit이라는 표현을 쓴다.  

- 즉 4계층에서 시퀀스 넘버를 통해, 잘게 쪼갠 데이터그램이 순서 매끄럽게 도착할 수 있게 해준다.

- 여기서 네트워크 레이어(3계층)에서 데이터의 흐름을 커넥션 오리엔티드 처럼 보내주는 도움도 준다. 

- 그래서 4계층은 신뢰할 수 있는 데이터 송수신을 담당한다.

- 그래서 TCP는 4계층에서 대표적인 예다. 

 

■ 참고로 UDP는?

- 얘는 커넥션 오리엔티드가 아니다. (순서 개판!)

- 그래서 virtual circuit도 아니다 (버츄얼 서킷은 논리적으로 연결되어, 순서가 매끄럽게 와야한다!)

- 실시간 방송을 예를 들 수 있다. 제시간에 안 온 데이터? 버려

 

■ 세그먼트 넘버링 :  정확하게 데이터가 줄지어 가서 도착할 수 있게 관리해줌

■ head of line blocking : 데이터가 하나라도 소실되면 뒤에 데이터가 갈 수 없는 현상을 말함. 그래서 계속 문제 발생(무한 루프 같은 것)

 

■ Checksum

- TCP에서는 반드시 checksum을 해야한다!

- 위의 그림은 패리티비트로 체크섬 하는 것이다. (오류검출)

- 결론 : 4계층은 반드시 데이터의 신뢰성 보장해줘야 한다! 

 

■ ACK  /  NACK

- 어? 오류는 아닌데? 근데 내가 원하는게 아닌거 같아! 

- 니가 보낸거 언제와? 

 

■ Automatic Repeat Request

- 자동 재전송 

 

■ flow control

- 데이터 보냈는데 응답이 없네? 음 시간이 많이 지났는데...일단 다시 보낼게! (재전송)

- 데이터 잘 받는거 같은데? 좀 더 빨리 많이 보내줄게! (underrun 감소)

- 데이터 잘 못받네? 너 버퍼가 부족하구나! 내가 천천히 속도 너에게 맞춰줄게 (overrun 방지)

 

■ 혼잡 방지

- 위에서 언급한 버퍼랑 관련. 즉 overrun 방지를 말함.

 

■ Transport Layer의 다중화
- 하나의 컴퓨터에서 동시에 다수의 네트워크 서비스를 지원할 수 있도록 가능하게 해줌
- TCP/IP의 port 번호 : 4계층의 멀티플렉싱은 포트를 통해 누가 네트워크 서비스를, 어떤 서비스를 원하는 건지 구별한다. 

 

■ UDP, TCP를 집중적으로 살펴보자

 

■ TCP

- 데이터 스트림 방식

- partial checksum(부분 체크섬) 은 왜 NO야?  왜냐하면 Data Checksum을 하니까(전부다 체크함). 그래서 부분부분할 필요 없으니까!

 

■ UDP

- 데이터 그램 방식 (1,2,3 계층이 이런 방식이다.)

- 그러면 UDP는 1,2,3 계층쪽인가? 아니다. UDP도 4계층에 속한다. 이유는?

- 일단 UDP도 순서는 있다. 다만, 데이터 던지고 수신확인을 안받기 때문에 데이타그램처럼 보이는 것이다. 

- 그래서 커넥션 오리엔티드가 NO이다.

- 마찬가지로 신뢰성이 떨어지니 reliable transport 가 NO이다.

- Checksum은 옵션이다. 해도 되고 안해도 되고~ (보통은 쓴다)

- partial checksum : 부분 부분 오류검출을 말함.  UDP는 안쓴다.

 

 

 

 

 

 

 

■ 학습정리

1. Transport Layer

  • connection-oriented communication
  • Reliability 신뢰성
  • Flow control
  • Multiplexing

'컴퓨터공학 > 컴퓨터네트워크' 카테고리의 다른 글

12. 세션 계층  (0) 2024.07.07
10. 네트워크 계층  (0) 2024.07.06
9. 데이터 링크 계층  (0) 2024.07.06
8. 물리 계층  (0) 2024.07.05
7. OSI 7 계층 개요  (0) 2024.07.05