23. 전송 계층의 역할
전송 계층의 두 가지 역할
※ OSI 모델의 전송 계층
- 응용 계층
- 전송 계층
- 네트워크 계층
- 데이터 링크 계층
- 물리 계층
다른 네트워크로 데이터를 전송하려면 라우터(router)가 필요하고, 라우터의 라우팅(routing) 기능을 사용하여 전송할 수 있다. 그러나 라우팅 정보가 잘못될 수 있고, 많은 라우터를 경유하는 도중에 라우터에 문제가 생기거나 패킷이 손상된다면 라우터의 라우팅 기능을 통해 데이터를 전송하더라도 목적지에 도착하지 못할 수 있다.
▶ 전송 계층: 목적지에 신뢰할 수 있는 데이터를 전달한다.
- 오류 점검 기능: 오류가 발생하면 데이터를 재전송하도록 요청한다.
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능
연결형 통신과 비연결형 통신
▶ 연결형 통신: 신뢰할 수 있고 정확한 데이터를 전달하는 통신
- TCP(Transmission Control Protocol; 전송 제어 프로토콜)
▶ 비연결형 통신: 효율적으로 데이터를 전달하는 통신
- UDP(User Datagram Protocol; 사용제 데이터그램 프로토콜)
Lesson 23 정리
- 전송 계층은 데이터를 제대로 전달하는 역할을 하며, 오류를 점검하는 기능도 한다.
- 전송 계층은 전송된 데이터의 목적지가 어떤 애플리케이션인지 확인한다.
- 연결형 통신은 신뢰할 수 있고, 정확하게 데이터를 전송하는 통신 방식이다.
- 비연결형 통신은 신뢰성을 보장하지 않지만, 효율적으로 데이터를 전송하는 통신 방식이다.
24. TCP의 구조
TCP(Transmission Control Protocol)
- TCP 헤더: TCP로 전송할 떄 붙이는 헤더
- 세그먼트(segment): TCP 헤더가 붙은 데이터
▶ TCP를 통한 데이터 전송:
1) 연결(connection)이라는 가상의 독점 통신로를 확보한다.
- 코드 비트: 107번째 비트부터 112번째 비트까지 6비트로 연결의 제어 정보가 기록되는 곳
- 초깃값 = 0, 비트가 활성화 되면 1이 된다.
- 연결을 확리하려면 SYN(연결 요청), ACK(확인 응답)가 필요하다.
3-way 핸드셰이크
▷ 3-way 핸드셰이크(three-way handshake)
- 통신을 하려면 컴퓨터2에게 허가를 받아야 하므로, 먼저 컴퓨터1에서 컴퓨터2로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다.
- 컴퓨터2는 컴퓨터1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보낸다. 동신에 컴퓨터2도 컴퓨터1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.
- 컴퓨터2의 요청을 받은 컴퓨터1은 컴퓨터2로 허가한다는 응답으로 연결 확립 응답(ACK)을 보낸다.
▷ FIN과 ACK을 사용한 연결 종료
- 컴퓨터1에서 컴퓨터2로 연결 종료 요청(FIN)을 보낸다.
- 컴퓨터2에서 컴퓨터1로 연결 종료 응답(ACK)을 반환한다.
- 또한 컴퓨터2에서 컴퓨터1로 연결 종료 요청(FIN)을 보낸다.
- 컴퓨터1에서 컴퓨터2로 연결 종료 응답(ACK)을 반환한다.
Lesson 24 정리
- 전송 계층에서는 TCP 헤더가 붙는다.
- TCP 헤더가 붙은 데이터를 세그먼트(segment)라고 한다.
- 연결(connection)을 확립하기 위해 TCP 헤더에 있는 코드 비트를 사용한다.
- 코드 비트 중 'SYN'은 연결 요청, 'ACK'는 연결 응답, 'FIN'은 연결 종료를 뜻한다.
- 연결 확립을 위해 패킷 교환을 세 번 하는 데 이를 3-way 핸드셰이크라고 한다.
- 연결을 확립할 떄는 'SYN'과 'ACK'를 사용하고, 연결을 종료할 때는 'FIN'과 'ACK'를 사용한다.
25. 일련번호와 확인 응답 번호의 구조
일련번호와 확인 응답 번호
: 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호(sequence number)와 확인 응답 번호(acknowledgement number)를 사용한다.
- 일련번호(sequence number)
: TCP는 데이터를 분할해서 보내는데, 일련번호(sequence number)는 송신 측에서 숫신 측에 '이 데이터가 몇 번째 데이터인지' 알려주는 역할 - 확인 응답 번호(acknowledgement number)
: 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할, 다음 번호의 데이터를 요청하는 데도 사용된다(확인 응답).
- 컴퓨터1은 컴퓨터2로 200바이트의 데이터를 전송한다.
- 컴퓨터2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터 번호를 확인 응답 번호(acknowledgement number)에 넣는다. 다음에 수신하고자 하는 데이터는 3001+200=3201 이므로, 3201번부터 보내달라고 요청한다.
- 컴퓨터1은 컴퓨터2로 3201번부터 200바이트의 데이터를 전송한다.
- 컴퓨터2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣는다. 다음에 수신하고자 하는 데이터는 3201+200=3401 이므로, 3401번부터 보내달라고 요청한다.
--> 데이터 전송이 완료될 때까지 반복한다.
▶ 재전송 제어
: 데이터가 항상 올바르게 전달되는 것이 아니므로, 일련번호(sequence number)와 확인 응답 번호(acknowledgement number)를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송한다.
윈도우 크기(window size)
세그먼트(segment; 데이터) 하나를 보낼 때마다 확인 응답 한 번을 반환하는 통신은 효율이 높지 않다.
매번 확인 응답을 기다리는 대신, 세그먼트(segment)를 연속해서 보내고 난 다음에 확인 응답을 반환하면 효율이 높아진다. 받은 세그먼트를 일시적으로 보관하는 장소 즉, 버퍼(buffer)를 이용하면 세그먼트(segment)를 연속해서 보내도 수신 측은 대응할 수 있고, 확인 응답의 효율도 높아진다.
- 오버플로(overflow): 수신 측에 대량으로 데이터가 전송되면 버퍼(buffer)가 이를 보관하지 못하고 넘쳐버리는 것
--> 오버플로(overflow)가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야 한다: 윈도우 크기(window size)
▶ 윈도우 크기(window size)
: 얼마나 많은 용량의 데이터를 저장해둘 수 있는지를 나타낸다. 윈도우 크기의 초깃값은 3-way 핸드셰이크를 할 때 판단한다.
Lesson 25 정리
- 3-way 핸드셰이크 이후 데이터를 전송할 때는 TCP 헤더의 일련번호(segment number)와 확인 응답 번호(acknowledgement number)가 사용된다.
- 데이터를 재전송하는 것을 재전송 제어라고 한다.
- 수신한 세그먼트(데이터)를 일시적으로 저장하는 장소를 버퍼(buffer)라고 한다.
- 데이터 크기가 버퍼 크기를 넘어서는 것을 오버플로라고 한다.
- 버퍼 용량의 크기를 윈도우 크기(window size)라고 한다.
26. 포트 번호와 구조
포트 번호(port number)
: 전송된 데이터의 목적지가 어떤 애플리케이션(웹 브라우저, 메일 프로그램 등)인지 구분하는 역할
- 출발지 포트 번호(source port number)
- 목적지 포트 번호(destination port number)
포트 번호(port numebr)는 0~65535번을 사용할 수 있다.
- 0~1023번 포트: 잘 알려진 포트(well-known ports) --> 주요 프로토콜이 사용하도록 예약되어 있다.
- 1025번 포트: 랜덤 포트 --> 클라이언트 측의 송신 포트
: 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다. 그래서 서버 측에서는 포트 번호를 정해둬야 하지만, 클라이언트 측은 정하지 않아도 된다.
Lesson 26 정리
- 포트 번호(port number)는 어떤 애플리케이션인지 구분하는 역할을 한다.
- 포트 번호는 0~65535번을 사용한다. 0~1023번은 잘 알려진 포트(well-know ports)라고 하고, 1025번 이후는 랜덤 포트라고 한다.
27. UDP의 구조
UDP(User Datagram Protocol)
▶ TCP(Transmission Control Protocol)
: 연결형 통신, 3-way 핸드셰이크로 연결이 확립된 후에 데이터를 전송하고 그때 확인 응답을 한다. 데이터 전송 도중에 오류가 발생하면 재전송하거나 포트 번호로 애플리케이션을 구분하여 데이터를 정확하게 전달하기 위한 기능도 있다.
▶ UDP(User Datagram Protocol)
: 비연결형 통신, 데이터를 전송할 때 TCP처럼 시간이 걸리는 확인 작업을 일일이 하지 않는다. 데이터를 효율적으로 빠르게 보낼 수 있기 때문에 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳에 사용된다.
UDP 헤더
▶ 브로드캐스트(broadcast)
: 랜(LAN)에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내는 것
Cf) TCP =/= 브로드캐스트
: TCP는 3-way 핸드셰이크와 같이 데이터를 전송할 때도 확인 응답을 하나씩 보내야 하기 때문에 브로드캐스트(broadcast)와 같이 불특정 다수에게 보내는 통신에는 적합하지 않다.
--> UDP에서의 브로드캐스트는 목적지에 관계없이 랜에서 일괄적으로 보내지만, TCP는 목적지를 지정하지 않으면 안 되기 때문에 일괄 통신을 할 수 없다.
Lesson 27 정리
- UDP는 데이터를 효율적이고 빠르게 보낼 때 사용되는 프로토콜이다.
- UDP는 UDP 헤더가 있지만 TCP 헤더에 비해 간단하다.
- UDP 헤더가 있는 데이터를 UDP 데이터그램(datagram)이라고 한다.
- UDP는 랜(LAN)에서 불특정 다수에게 브로드캐스트(broadcast)로 데이터를 일괄 전송한다.
'네트워크' 카테고리의 다른 글
[모두의 네트워크] 8장 - 네트워크의 전체 흐름 살펴보기 (0) | 2023.08.16 |
---|---|
[모두의 네트워크] 7장 - 응용 계층: 애플리케이션에 데이터 전송하기 (0) | 2023.08.16 |
[모두의 네트워크] 5장 - 네트워크 계층: 목적지에 데이터 전달하기 (0) | 2023.08.15 |
윈도우에서 사설 IP 주소 확인해보기 (0) | 2023.08.15 |
[모두의 네트워크] 4장 - 데이터 링크 계층: 랜에서 데이터 전송하기 (0) | 2023.08.15 |