네트워크

[컴퓨터네트워크] week7 - 전송계층과 응용계층

haerangssa 2024. 12. 8. 04:13
전송계층의 데이터 전송

 

인터넷 계층(IP)과 전송계층(TCP)

분류 인터넷 계층 전송 계층 
기능 - 인터넷에서 수신 노드까지 경로 찾아 패킷 전송.
(pc 간의 데이터 전송)
- 식별은 MAC주소로 !
- 수신노드의 애플리케이션까지 데이터 전송
(애플리케이션 간의 데이터 전송)
- End to end
서비스 - 통신하는 호스트간에 패킷 전달하는 최선의 노력 (Best Effort) 서비스
- data 쪼개서 목적지 주소 붙여 흩뿌림
- 어떤 애플리케이션 데이터인지 식별해서 애플리케이션에게 배분
에러 - 전송 과정에서 패킷 손실과 에러문제를 해결하지 않음.
- 오로지 경로 잘 찾아가는 것이 목표
- 네트워크 혼잡 상황에 따라 패킷 전송량 조절하여 패킷 흐름을 제어함
- 오류를 검사하여 패킷이 수신지에 잘 도착했는지 확인
신뢰성 - 패킷 전송 순서나 완전성 보장하지 않음
> 비신뢰형 서비스
- 오류, 흐름 제어하여 완전성 보장 (에러 정정도 O)
> 신뢰형 서비스
식별 IP 주소 포트번호

 

 

1. 전송계층의 역할

- 수신 노드의 애플리케이션까지 패킷흐름과 오류를 제어하여, 신뢰할 수 있는 데이터를 전송함.

> 이때 주소는 포트번호!

- 애플리케이션 간의 데이터 통신 구현

- 애플리케이션 별로 다른 포트번호 배분. 

 

2. 전송계층과 데이터링크 계층의 차이

- 오류, 흐름 제어, 데이터 순서화 > 데이터링크 계층과 특징 유사하지만,

데이터링크는 두 호스트 간의 관계(MAC으로 식별. computer-to-computer)이며, 전송계층은 end-to-end 간의 관계라는 점이 다름.

- 네트워크 끝단에 위치한 통신주체가 중간의 논리적인 선로(= 라우터로 연결된 네트워크) 통해 데이터 주고 받음.

 

3. 전송계층의 핵심기능

1) 흐름제어

- 양 끝단의 송수신 호스트의 네트워크 프로세스가 데이터를 주고 받을 때 속도 조절하는 기능

- 수신 호스트가 슬라이딩 윈도우 하단값(= 송신 네트워크 프로세스가 보낼 수 있는 패킷의 한계)을 조정.

FIFO / First In First Out / 대표적인 메모리 작동방법

* 슬라이딩 윈도우 (속도조절)

메모리에 데이터 쌓아두고, 넘치면 데이터 손실이 발생 > 서비스 품질 저하

 

2) 오류 제어

- 데이터 전송 과정에서 발생하는 오류를 복구하는 기능. (데이터 변형, 분실)

- 체크섬을 활용한 오류 검출과 재전송 (번호 붙여 전송 > 누락 확인도 가능)

 

3) 분할과 결합 (데이터 순서화 포함)

상위계층(애플리케이션) 데이터 크기가 전송계층에서 처리 가능한 데이터 크기보다 큼

-> 데이터를 분할해서 번호를 붙여 전송해야함

-> 분할해서 보낸 데이터를 수신쪽에서 다시 원래 데이터로 복구(병합)

 

 

4. TCP 세그먼트 형식과 내용

- 세그먼트: TCP 프로토콜에서 두 호스트 간에 전송하는 전송 단위

필드 이름 길이 내용
S.Port 2byte Source Port. 패킷의 출발지 포트 번호
0 - 65535
D.Port 2byte Destination Port. 패킷의 목적지 포트 번호
Seq.Number 4byte Sequence Number. 패킷의 순서 값
Ack.Number 4byte Acknowledgement Number. 통신 상대의 패킷 순서 값
Date Offset 4bit TCP패킷 헤더 길이. 32비트(4바이트)가 몇행인지 가리킴. 최소 값은 5임.
Reserved 6bit 나중에 필요할 때 사용하려고 남겨둔 공간
Control Bits 6bit 6개의 비트는 각각 TCP 패킷의 종류와 특성을 가리킴. 
ex) ACK와 FIN이 1이면 Control Bits는 010001.

- URG(Urgent): 1이면 헤더 마지막 필드인 긴급 포인터의 내용 실행
- ACK: 1이면 확인 번호 필드가 유효
- PSH(Push): 1이면 송신자에게 높은 처리율 요구
- RST(Reset): 1이면 TCP 연결 다시 설정 > 초기화
- SYN(Synchronize): 1이면 연결요청과 설정, 확인 응답에서 순서번호 동기화. 
- Fin(Finish): 1이면 TCP연결 종료

 

필드 이름 길이 내용
Window 2byte TCP에선 흐름제어를 할 때 슬라이딩 윈도우와 혼잡 윈도우 방법을 사용함.
- 슬라이딩 윈도우: 데이터를 한번에 처리할 수 있는 버퍼의 용량을 의미하는 윈도우 개념을 사용. 송신 시스템이 전송한 전체 세그먼트에 대한 확인 메시지를 수신하기 전, 다른 세그먼트를 전송할 수 있게 해줌. / end to end, 버퍼 상태 알려줌.

- 혼잡 윈도우: 네트워크 혼잡 문제 해결을 위해 송신 시스템이 이용하는 방법.
네트워크 혼잡이 발견되면 보내는 데이터 양을 줄이고, 혼잡이 줄어들면 다시 원래 보내던 만큼 데이터 양을 늘림. / 둘 사이 경로 성능의 차이를 제어.
Checksum 2byte 데이터 오류 검출을 위한 값
Urgent Pointer 2byte Control Bits가 URG인 경우, 현재 전송되는 데이터에 상관없는 TCP를 보내 우선 처리할 때 사용. 우선 처리하려는 긴급 데이터의 마지막 바이트 위치를 Urgent Pointer로 나타냄. / 긴급문자 등
Options 가변 옵션의 종류와 길이, 데이터를 저장. / Data 포맷을 확장 가능하도록 열어둠
Padding  가변 옵션이 32비트가 안 되면 나머지를 0으로 채움
Data (바디. 위의 것들은 헤더) 가변 전송하고자 하는 데이터 저장

 

 

5. 전송계층의 캡슐화.

- 목적지까지 잘 갈 수 있도록 상위 > 하위로 가며 껍데기가 쌓임.  (캡슐화)

- 출발지 포트는 사용하지 않는 임의의  포트(1024-65535)를 응용 프로그램 별로 할당.

ex) 임의로 3405포트를 출발지 포트로 할당하여 80번 포트인 웹서버에 접속.

 

 

6. 네트워크 계층과 전송계층의 주소 표현

- IP 주소와 포트번호 조합: TCP/IP네트워크 환경에서 호스트의 네트워크 프로세스를 구분 가능한 주소.

- (전송-세션 & 네트워크-전송) 계층의 경계점 주소

* TSAP(Transport Service Access Point): 전송 계층과 세션 계층의 경계점.

* TSAP Address: 전송과 세션 계층 서비스의 접근점을 식별하기 위한 주소

* NSAP(Network Service Access Point): 네트워크 계층과 전송 계층의 경계점. / 여러 개 존재 가능.

* NSAP Address: 네트워크와 전송 계층 서비스의 접근점을 식별하기 위한 주소. 

 

 

7. 소켓(socket)

- 애플리케이션-전송 계층 경계점을 위한 도구

- 네트워크 프로그래밍 인터페이스 = 네트워크 소켓 = 인터넷 소켓

- TCP/IP 혹은 UDP/IP 프로토콜을 사용하여 IP 주소, 포트주소를 활용하여 통신할 수 있도록 함.

 

1) 통신 동작

- 소켓 생성

- 서버 바인드: 특정 포트에 소켓을 바인딩하여(연결) 클라이언트 요청 대기

- 서버 리슨: 서버는 클라이언트의 연결 요청을 대기

- 연결 수락: 서버가 클라이언트의 연결 요청을 수락

- 데이터 전송: 클라이언트와 서버 간에 데이터를 주고 받음

- 연결 종료: 통신 종료되면 소켓 닫음.

 

2) 소켓 통신

- 네트워크 프로그래밍으로 다양한 응용 애플리케이션에 필수적으로 활용됨

- 웹서버, 파일전송, 채팅 애플리케이션, 온라인 게임, IoT기기 통신 등에 응용

 

- [주요 문제]

* 동기화 문제: 클라이언트와 서버 간의 전송 순서 맞춰야 함

* 네트워크 지연: 네트워크 상태에 따라 지연 발생 가능, 데이터 전송 성능에 영향

* 보안 문제: 데이터를 암호화하여 전송하거나, SSL/TLS 사용해 보안 강화 가능

* 포트 충돌: 동일 포트 사용하는 여러 애플리케이션 있을 경우 충돌 발생 가능.

 

 

8. 멀티플렉싱 - 동시 서비스 위해

- TPDU(Transport Protocol Data Unit) 단위로 호스트들이 애플리케이션 데이터를 주고 받음.

- TPDU의 목적지가 동일하면 하나의 가상회선에 실어 전송하는 것이 유리함.

 

9. 네트워크 통신 구조

- 연결(TCP)/비연결형(UDP) 서비스가 소켓번호, 포트번호, IP주소로 네트워킹.

 

 UDP는 무작정 보내서 TCP가 가진 장점이 없다고 한다. 그러면 도대체 왜 쓰는걸까?

   ㄴ TCP는 쌍방이 주고 받는게 많아지면 오버헤드가 증가하여 Throuput 감소함.

        ㄴ 오버헤드를 줄이려고 나머지를 다 버리고 UDP를 사용함. > 헤더가 작아 속도가 매우 빨라짐

장점

오버헤드가 줄고 초저지연임.

 

결론

초저지연이 필요해서 UDP를 사용해 딜레이를 줄인다. 

해외 원격 수술, 커넥티드 카 등 미래기술 위해 !

 

응용분야

줌, 구글미트, 원격수술, 커넥티드 카 등

 

 

 

10. TCP/IP 활용한 네트워크 통신 구조

 

 

11. TCP 연결 설정 및 연결 해제 과정

와이어샤크로 캡쳐 가능 !

세션 맺고 끝냄 > 나와 상대의 Net Service 연결

 

 

12. 전송 계층의 데이터 전송

- 애플리케이션 간 가상의 연결 통로를 통해 데이터를 전송

- 포트: 애플리케이션과 연결 통로의 인터페이스

- 포트번호: 포트 식별을 위한 주소

한 집에서 두명의 가족이 받을 편지와 택배가 있다고 치자.
= 한 PC에 여러 애플리케이션이 동작 

IP : 시/구/동 주소 - 동네
MAC: 번지/동/호 주소 - 집 주소
PORT: 사람 이름 - 가족 구성원 >> 여러 가족이 편지, 택배를 받을 수 있다.

 

이와 같이

터넷 계층에서 IP주소를 확인하여 > 수신지 pc가 있는 네트워크로 데이터를 전송하고 > 네트워크 인터페이스 계층의 MAC주소를 보고 수신지 pc로 데이터를 전송한 후 > 포트 번호를 보고 어떤 애플리케이션을 사용할지 식별함 !!!

 

 

13. Port

1) 포트 번호

- 16비트 사이즈 > 0-65535번까지

- 웰 노운 포트:  서버 애플리케이션용으로 예약된 포트 / 0~1023번 / HTTP(웹), FTP(파일 전송), SMRP(이메일 전송) 등..

- 등록된 포트: 자주 이용되는 서버 애플리케이션을 식별하기 위한 포트번호 / 1024~49151번

- 동적 포트: 클라이언트 애플리케이션용 임시 포트 /  49152~65535번

 

2) 대표적 웰 노운 포트

포트번호 서버 애플리케이션
20번 FTP(파일전송)
22번 SSH(텔넷 + 보안기능추가)
23번 Telnet(원격제어) - 드론/ 로봇 컨트롤에 자주 사용
25번 SMTP(이메일 송신) / Send Mail
80번 HTTP(웹)
110번 POP3(이메일 수신)
143번 IMAP 4 (이메일 수신 + 보관 기능)
443번 HTTPS(웹 + 보안 기능) - SSL/TLS로 암호화 됨. 

 

3) 동적 포트

클라이언트 애플리케이션이 포트 번호가 필요할 때 할당하는 포트번호 (59152~65535)

> 동시서비스 가능하도록 통신할 때 비어있는 번호를 할당함. 

 

4) 포트 이용한 다중 연결

- 전송 계층에서, 여러 개의 포트를 사용해 여러 앱들이 동시에 연결된 상태로 데이터 통신이 가능하도록 함.

ex) 웹브라우징(80) + 메일 송신(25) + 파일 다운로드(21)

 

 

 14. 통신 

 

- 클라이언트 1의 통신 1,2

송신IP, 수신IP, 수신 포트번호 동일 > 송신 포트번호가 다르니 이걸로 구분 > 혼선 없는 통신

- 클라이언트 1의 통신 1, 클라이언트 2의 통신 3

송신 포트, 수신 포트, 수신 IP 동일 > 송신 IP로 구분 > 혼선 없는 통신

더보기

* 어 근데 송신포트가 같아도 되나요?

넹. 컴퓨터 안에서만 충돌하지 않으면 돼서 49153으로 같아도 괜찮다. IP주소가 다르기 때문 ㅎㅎ.

1) 연결형 통신: 신뢰 가능한 정확한 데이터를 전달하는 통신

- 통신 상대와 데이터 전송 성공 여부를 확인하며 통신

- TCP 통신 = 연결성 서비스 통신 / 신뢰, 정확 중시

- hand shake O / 나 간다?  네 오세요.  ㅇㅋ 보냄.  잘 받았어.  굿 확인 완.

 

2) 비연결형 통신: 효율적으로 데이터 전송하는 통신

- 상대의 확인 없이 데이터를 전송함. 논리적 연결 없이 불연속적으로 발생하는 데이터마다 다른 경로를 이용함.

- UDP 통신 = 비연결성 서비스 / 효율 중시

- hand shake X / 걍 무턱대고 저 데이터 보낼게용. 함

 

 

15. UDP와 L4 스위치

1) UDP 패킷 구조

패킷 내용은 TCP랑 동일하다.. 확인하러 올라가거라

2) L4 스위치 = 전송계층 장비

- 전송 계층에서 동작하는 스위치

- TCP/UDP 포트번호 검사. 헤더까지 까본다.

- 서버나 네트워크의 트래픽을 균등하게 분배하는 로드밸런싱 기능 O

 

요청 > L4가 받아 서버 여러개 중 일이 적은 서버에 할당 > 대부분의 서버가 비슷한 일의 양 소유

(로드밸런싱 과정)


응용 계층

 

1. 세션 계층 프로토콜 (5계층)

- 애플리케이션의 세션 연결, 해제, 동기 기능

- 세션이란? 통신의 개시부터 종류까지, 컴퓨터 간의 네트워킹을 위한 논리적 연결!

- 동기란? 통신 양단에서 오류 복구를 위해 데이터 처리 절차와 타이밍을 맞추는 기능!

 

** hand shake 등 인증이 끝나야 세션이 연결된다.(나와 상대방 pc간 data 통신이 가능해짐) **

 

 

2. 표현 계층 프로토콜 (6계층)

- 데이터 인코딩, 압축, 암호화 하는 기능

- 압축이란? 전송 데이터 양을 줄여서 전송하여 전송 효율을 높임. (스루풋, 에너지 효율, 전송 지연)

- 암호화란? 데이터 송수신하는 당사자 이외의 제 3자가 정보를 유출하거나 위변조함을 방지

- 인코딩이란? 데이터 송수신하는 다른 장치와 다른 애플리케이션의 표준에 호환되도록 데이터 표현

    ㄴ 비디오, 보이스 데이터 전송할 때 표준화된 포맷을 맞춰야 O (MP3, MP4 등)

 

 

3. 데이터 압축

1) 비손실 압축

- 압축 과정에서 원래 데이터 내용을 분실하지 않음. 

(압축해제를 통해 얻은 데이터가 압축 이전과 완전 동일) 

- 비손실 압축 알고리즘을 사용해 압축 데이터를 복원하면 원래 데이터를 얻을 수 있음.

* 압축률이 엄청 높지는 않다.

 

2) 손실 압축

- 압축해제한 데이터가 원래와 동일하지 않음.

- 데이터 손실 허용 범위는 애플리케이션마다 다름.

- 손실 압축 과정을 거친 데이터는 해제 시 원래 데이터로 완전한 복원이 불가. 

ex) 다양한 색이 통일됨, 데이터 쓸 때 유튜브 화질 저하 등

(그래도 괜찮은 애플리케이션 많다.)

- 손실 압축 사용하는 이유: 비손실에 비해 압축 효율이 좋음 > 네트워크로 전송되는 데이터 양 줄일 수 있음

 

 

4. 네트워크 보안

1) 기밀성 취약점

- 인터넷은 전 세계적으로 연결된 거대한 통신망 > 다양한 보안문제 존재

- 감청과 위변조

2) 기밀성 강화 기술

- 애플리케이션 계층 암호화

- 데이터 링크 계층 암호화

- 물리 계층 암호화

3) 데이터링크 계층 암호화

- 응용계층부터 네트워크 계층까지는 암호화하지 않고, 전송 직전인 데이터 링크 계층에서 암호화하는 방식.

4) 응용 계층 암호화

- 호스트의 애플리케이션 보안 지원 위해 응용 계층 암호화 방식 사용. 

- end-to-end 보안을 유지하려면 종단간 암호화가 필요함.

* end-to-end : 네트워크의 양 끝에 있는 장치들(호스트, 사용자 단말 등) 간의 직접적인 통신과 상호작용. 

네트워크의 중간에 위치한 라우터, 스위치 등 중간 장치들이 아니라 통신의 실제 송신자와 수신자 간에 초점을 맞춘 개념 

자기 키 값으로 Data 메시지 암호화해서 보내기에, 중간 계층에서 그 내용을 확인할 수 없다. 

 

 

5. 데이터 표현 기능 : 컨테이너와 코덱

- 스트림 비디오, 오디오 처럼 시간에 따라 변하는 일련의 데이터를 의미.

- 코덱(codec = coder + decoder)

:  음성 또는 영상 신호를 디지털 신호로 변환하는 coder와, 디지털 신호를 음성 또는 영상으로 변환하는 Decoder를 합친 합성어. 

(영상 및 오디오를 보관하기 쉽게 압축하고 재생할 떄 복원하는 소프트웨어. 국제표준 MP3, MP4 등)

- 코덱의 종류: 손실 압축 코덱, 무손실 압축 코덱 / 앞의 압축 기법과 결합

 

6. 응용 계층

1) 응용 계층 역할

- 서비스 종류나 동작방식 결정

- 서비스 제공을 위해 데이터를 만들거나, 서비스 요청 받으면 서비스 제공함. 

(서버와 클라이언트 애플리케이션의 관계)

 

2) 응용 계층 특징

- 응용 계층: 사용자가 체감하는 계층

- 나머지 하위 3개: 사용자가 의식하지 않고 당연하게 사용하는 인프라 계층

- 애플리케이션 : 서비스 요청이나 제공하는 데이터 생성

- 운영체제 : 전송 계층 포함한 프로토콜 스택(TCP/IP기능 sw)이 데이터 전송 처리

- 애플리케이션 개발자: OS에서 데이터 전송을 알아서 처리해주므로, 데이터 전송은 신경쓰지 않고 서비스 구현.

 

3) 응용 계층의 동작 방식

클라이언트가 request > 서버가 response

 

4) URL(Uniform Resource Locator)

- 인터넷에 존재하는 리소스(문서,이미지,음성 등)의 위치 지정하는 방법

- 클라이언트가 서버에 특정 서비스 요청하는 수단

 

5) URL구조와 예

스킴 + :// + 도메인 + :포트번호 + / + 디랙토리 + / + ... + 파일명

* 스킴 - 서비스의 종류(프로토콜)
* :// - 뒤에 이어지는 문자열이 서버 주소임을 나타냄
* 도메인 - 서버 주소
* :포트번호 - 애플리케이션 식별 번호
* /~파일명  - 파일의 경로. 서버 내에서 파일 주소 (생략가능)

 

 

 

7. 방화벽 

네트워크 계층별로 존재하는 소프트웨어. 

 

1)  방화벽을 사용하는 이유 

- 개방적인 공중 인터넷 망(www)과 제한된 사용자 그룹에 허가된 사설망(학교, 회사 등) 사이에 보안 관리 기능을 제공. > 사설망을 외부로부터 보호하는 가장 간단한 방법은 외부망을 끊어버리는 것. 

 

2) 방화벽이 하는 일

- 필터링하여 공격자의 IP를 차단 > black list

- 망에 들어오려면 ID/PW인증 해야함 > white list

- 방화벽은 라우터, 게이트웨이 등에 내장됨.

 

3) 방화벽 구현 방법

- 방화벽 장비(sw)도입

- 라우터 이용한 방화벽 구현

- 프록시 이용한 방화벽 구현

 

+) 

7-1. 라우터 이용한 방화벽 구현

- 인터넷에 연결된 호스트들은 외부 통신망과 연결하기 위해 반드시 라우터의 중개과정 거침

- 라우터를 이용해 방화벽 구현하는 것은 간단하고 효과적 - 특정 IP 차단 가능

- 라우터는 자신과 연결된 네트워크로부터 입력된 패킷의 정보를 분석하여 어느 네트워크로 중개할 것인지 결정함.

> 패킷을 계속 전송할지에 대한 권한도 가짐

- 라우터의 방화벽 기능은 네트워크 계층과 전송 계층의 헤더에 정의된 IP 주소와 포트번호에 기초하여 이뤄짐.

> 이메일 내용처럼 패킷 내부에 포함되는 응용 데이터는 제어 불가.

 

7-2. 프록시 이용한 방화벽 구현

- 프록시는 응용환경에서 적절하게 처리 가능한 정보만 수신하도록 가상의 응용 프로그램을 시뮬레이션하는 방화벽

* 메일 송신자와 수신자 사이에 메일 프록시를 설치 > 수신자는 메일 프록시 내부의 가상 송신자를 메일 송신자로 인식하고,

송신자는 메일 프록시 내부의 가상 수신자를 메일 수신자로 인식하며 SMTP 메시지를 전송