[컴퓨터 네트워크] connection-oriented service, connectionless service, sharing the links
네트워크 통신은 연결지향형 / 비연결지향형 service로 나뉜다.
연결지향형 service
- a connection-oriented service
- 인터넷의 connection-oriented service를 TCP라 부른다.
- client와 server의 연결이 설정된 후 데이터가 전송된다.
- 프로토콜에 의해 연속적으로 패킷의 정보 상태 유지된다.
- 모든 데이터는 적절한 순서를 유지하며 에러 없이 전달된다.
- 1:1 연결 상태를 유지하며 통신한다.
- 이때 만들어진 연결 선로를 session이라고 한다.
handshaking 과정은 TCP프로토콜에서 사용하는 개념이다.
통신을 시작하기 전에 연결을 설정하는 과정으로 3-way handshaking으로 불린다.
- SYN: TCP connection request > 클라이언트가 서버에 요청을 보낸다.
- SYN-ACK: TCP connection reply > 서버가 클라이언트의 요청을 받고 응답을 보낸다.
- ACK: 클라이언트가 서버의 응답을 확이한 후, 연결이 설정된다.
handshaking을 통해 packet을 먼저 주고받는 것이다.
flow control 흐름제어
- sender와 receiver 사이의 데이터 처리 속도 차이를 해결하기 위한 기법
- source > destination까지 여러 router를 통과함
- queuing delay
- buffer size로 인한 packet loss
- 여러 흐름제어 방법 중 stop and wait과 sliding window 등이 있음
congestion control
네트워크에서 과도한 트래픽으로 인해 발생하는 혼잡을 방지하고, 성능 저하를 최소화하기 위해 사용되는 메커니즘
congestion은 한국말로 "혼잡"이다.
이는 네트워크 상에 packet들이 너무 많아서 혼잡이 발생하는 경우를 말한다.
TCP에서는 이러한 상황에서 packet loss를 방지하고 데이터 전송 속도를 조절하는 congestion control이 필요하다.
비연결지향형 service
- connectionless service
- 인터넷의 connectionless service를 UDP라 부른다.
- user datagram protocol
- handshaking 과정이 없고 delay 적음
- real-time audio
- video transfer 에 적합
- 각각의 패킷들이 독립적
- 전송방식이 단순하고 신뢰성 낮음, 통보 없이 누락 가능
sharing the links
많은 수의 유저가 link를 공유할 때 router은 packet들을 분리해야 한다.
link를 공유하기 위해 circuit switching과 packet switching 2가지 방법을 사용할 수 있다.
- Circuit switching은 주로 연결형 서비스에서 사용
- Packet switching은 비연결형 서비스에서 더 많이 사용되지만, 연결형 서비스에서도 사용 가능
circuit switching
하나의 회선을 할당받아 데이터를 주고받는 방식이다.
- 통신을 위한 연결 후 soure부터 destination까지 사용되는 회선 전체를 독점
- 전화와 같은 실시간 통신에 사용 > 전화 통화 중에는 발신자와 수신자 사이에 물리적 회선이 설정되어, 통화가 끝날 때까지 그 회선은 다른 사람에게 사용되지않음
- 속도와 성능이 일정
Circuit switching이 회선을 분할하는 방식에는 FDM과 TDM이 있다.
- FDM
- 하나의 물리적 회선을 여러 주파수 대역으로 나누어, 각 대역을 서로 다른 사용자에게 할당
- 사용자 별로 주파수를 각각 한정시킨 것
- 서로 다른 주파수 대역을 사용하므로 동시에 통신이 가능
- 주파수 대역이 고정되기 때문에 비효율적임
>> 사용자가 통신 중이 아니더라도 해당 주파수 대역은 비어 있어도 사용할 수 없음 - 물리적 자원(주파수 대역)이 제한되어 있어, 사용자 수가 증가하면 한계에 도달
- TDM
- 하나의 전송 회선을 여러 사용자들이 시간적으로 나누어서 사용
- 한 회선에서 데이터를 보내는 사용자는 각자의 시간 슬롯에만 데이터를 전송할 수 있음
- 다른 사용자는 자신의 슬롯이 오기 전까지 대기
- 사용자는 각자에게 할당된 시간 슬롯에서만 데이터를 전송하며, 이로 인해 충돌이나 간섭이 발생하지 않음
packet switching
송신할 데이터를 packet으로 쪼갠 뒤 packet 단위로 어디로 갈 지 길을 바꿔주는(정해주는) 것
packet은 header와 playload 부분으로 나눌 수 있다.
- header: 목적지, end system의 IP주소, 패킷의 번호, 길이 등
- playload: 실제 전송하고자 하는 데이터
패킷의 헤더 부분을 이용해 목적지의 IP주소로 전송될 수 있는 것이다. 이 패킷의 구조나 주소 체계 등이 바로 통신 규약인 protocol의 일종이다.
- host는 패킷을 그냥 네트워크 상에 뿌린다.
- 각 패킷은 링크, 라우터 등을 거쳐서 목적지까지 다다른다.
- 이때 패킷을 수신한 라우터는 헤더 정보를 기반으로 경로를 탐색하고 송신할 링크를 찾는다.
- 모든 링크들을 사용할 수 있고 네트워크 상의 어떤 링크든지 목적지에만 연결됐다면 타고 갈 수 있다.
- 단 보장되지 않는다!!
- 패킷이 타고 가는 경로가 각각 다르고 다양하다 보니까 전송 여부를 파악하기 매우 힘들다.