Open Systems Interconnection, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명하기 위해 개발한 모델
계층 | 데이터 단위 (PDU) |
---|---|
7: 응용 계층 (Application Layer) |
메시지 (Message) |
6: 표현 계층 (Presentation Layer) |
|
5: 세션 계층 (Session Layer) |
|
4: 전송 계층 (Transport Layer) |
TCP - 세그먼트(Segment) UDP - 데이터그램(Datagram) |
3: 네트워크 계층 (Network Layer) |
패킷 (Packet) |
2: 데이터 링크 계층 (Data Link Layer) |
프레임 (Frame) |
1: 물리 계층 (Physical Layer) |
비트 (Bit) |
PDU: Protocol data unit, 계층에서 처리하는 데이터의 단위
헤더와 페이로드(Payload)로 구성되어있다.
송신 측(상위 계층)에서 응용 계층부터 순서대로 각 계층에서 데이터에 헤더를 추가하고 아래 계층으로 보내는 과정
헤더(Header): 데이터의 앞 부분에 위치하는 데이터 전송에 필요한 정보
수신 측에서 물리 계층부터 순서대로 데이터의 헤더를 제거하고 위 계층으로 전달하는 과정
현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜의 모음
TCP/IP 소켓 프로그래밍 (네트워크 프로그래망): 운영체제의 전송 계층에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것
대표적인 프로토콜은 TCP
와 UDP
가 있다.
TCP (Transmission Control Protocol)
연결형 서비스
- 가상 회선 방식을 제공
- 3-way handshaking 과정을 통해 연결을 설정
- 4-way handshaking을 통해 연결을 해제
흐름 제어(Flow control)
데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
- 수신자도 Window Size를 통해 수신량을 정할 수 있다.
혼잡 제어(Congestion control)
네트워크 내의 패킷 수가 넘치지 않도록 방지
- 데이터의 소통량이 과하면 패킷을 조금만 전송해서 붕괴현상을 막는다.
신뢰성 높은 전송
- Dupack-based retransmission: ACK 값이 중복으로 올 경우 패킷 이상을 감지하고 재전송 요청
- Timeout-based retransmission: 일정시간동안 ACK 값이 수신을 못할 경우 재전송 요청
TCP 헤더 정보
필드 내용 크기 송수신자의 포트 번호 TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당되는 포트 주소 16 시퀀스 번호
(Sequence Number)송신자가 지정하는 순서 번호, 전송되는 바이트 수를 기준으로 증가
SYN = 1 : 초기 시퀀스 번호가 된다. ACK 번호는 이 값에 1을 더한 값
SYN = 0 : 현재 세션의 이 세그먼트 데이터의 최초 바이트 값의 누적 시퀀스 번호32 응답 번호
(ACK Number)수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용 32 데이터 오프셋
(Data Offset)TCP 세그먼트의 시작 위치를 기준으로 데이터의 시작 위치를 표현(TCP 헤더의 크기) 4 예약 필드 사용을 하지 않지만 나중을 위한 예약 필드이며 0으로 채워져야한다. 6 제어 비트 SYN, ACK, FIN 등의 제어 번호 6 윈도우 크기
(Window Size)수신 윈도우의 버퍼 크기를 지정할 때 사용. 0이면 송신 프로세스의 전송 중지 16 체크섬 (Checksum) TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터에 대한 오류 검출 용도 16 긴급 위치
(Urgent Pointer)긴급 데이터를 처리하기 위함, URG 플래그 비트가 지정된 경우에만 유효 16 제어 비트(Flag Bit) 정보
ACK
- 응답 번호 필드가 유효한지 설정: 송신측에 수신측에서 긍정적인 응답으로 보낸다.(패킷이 도착)
- 클라이언트가 보낸 최초의 SYN 패킷 이후 전송되는 모든 패킷은 이 플래그가 설정되어야 한다.
SYN
- 동기화 시퀀스 번호
- 양쪽이 보낸 최초의 패킷에만 이 플래그가 설정되어야 한다.
UDP (User Datagram Protocol)
- 비연결형 서비스로 데이터그램 방식을 제공
- 연결형이 아니라서 데이터를 주고받을 때 신호절차가 필요없고 서버 소켓과 클라이언트 소켓의 구분이 없다.
- 신뢰성이 낮지만 속도가 빠르다.
UDP 헤더 정보
필드 내용 크기 송신자 포트 번호 데이터를 보내는 어플리케이션의 포트 번호 16 수신자 포트 번호 데이터를 받을 어플리케이션의 포트 번호 16 데이터 길이 UDP헤더와 데이터의 총 길이 16 체크섬 (Checksum) 데이터 오류 검사에 사용 16
공통점
- 포트 번호를 이용하여 주소를 지정한다.
- 데이터 오류 검사를 위한 체크섬이 헤더에 존재한다.
차이점
- TCP와 UDP는 신뢰성과 연속성 측면에서 상충 관계(trade off)에 있다.
- TCP: 신뢰성 ⬆ 연속성 ⬇
- UDP: 신뢰성 ⬇ 연속성 ⬆
- TCP는 데이터의 경계를 구분하지 않는 반면 UDP는 데이터의 경계를 구분한다.
- TCP는 신뢰성있는 데이터 전송을 보장하지만 UDP는 재전송이 불가능해서 신뢰성이 떨어진다.
- TCP는 일대일 양방향 통신이라서 멀티캐스팅 또는 브로드캐스팅이 불가능하지만 UDP는 가능하다.