전송 계층은 네트워크의 신뢰성 등 중요한 기능들을 담당하고 있다.여기엔 멀티플렉싱 디멀티플렉싱 트래픽, 장시간 실행되는 연결 설정, 오류 확인 및 데이터 검증을 통한 데이터 무결성 보장등 이 포함된다.
목표
- 멀티플렉싱과 디멀티플렉싱이 뭔지, 어떻게 동작하는지 알기
- TCP, UDP 차이 식별
- 3웨이 핸드쉐이크 이해
- TCP 플래그가 어떻게 사용되는지 이해
- 방화벽이 네트워크를 보호하는 기본 이해
전송 계층은 멀티플렉스 와 디멀티플렉스 기능을 가지고 있는데, 전송 계층에서 전송 계층에서 멀티플렉싱은 네트워크의 노드가 트래픽을 다양한 수신 서비스로 유도할 수 있다는 것을 의미다.
디멀티플렉싱을 수신 쪽에서 동일한 노드에 트래픽을 보내 적절한 수신 서비스를 전달하는것이다
전송계층은 포트를 통해서 멀티플렉싱과 디멀티플렉싱을 처리한다.
포트는 특정 서비스로 네트워크 트래픽을 전달하는데 사용되는 16비트 수이다.포트는 일반적으로 IP 주소 뒤에 클론으로 표시된다. ex) 10.1.100.1:80이렇게 쓰면 소켓 주소나 소켓 번호로 알려진다.
포트를 사용하면 단일 서버에서 다양한 어플리케이션을 호스팅 할 수 있다.
TCP Segment
네트워크 트래픽이 예상대로 동작하지 않는 경우엔
네트워크 트래픽을 분석해야 될 수 있다.
이더넷 프레임이 IP데이터그램을 캡슐화 하는 것 처럼, IP 데이터그램은 TCP 세그먼트를 캡슐화 한다.
이더넷 프레임의 페이로드 섹션은 IP 데이터그램 전체 컨텐츠가 들어간다.
IP 데이터 그램에도 페이로드 섹션에 TCP 세크먼트가 구성이 된다.
TCP 세그먼트는 TCP 헤더와 데이터 섹션으로 구성된다.
여기서 데이터 섹션은 어플리케이션 계층의 페이로드 영역이다.
TCP 헤더 자체는 많은 필드로 분할 된다.
먼저 소스 포트와 목적지 포트 필드가 있다.
목적지 포트는 트래픽이 목적하는 서비스의 포트다
소스 포트는 웹 서버가 응답할 때 웹서버가 응답을 돌려 줄때 요청 했던 컴퓨터가 데이터를 전달 받을 수 있게
소스 포트가 필요하다.
다음은 시퀀스 필드가 있다.
32비트의 숫자로 TCP 세그먼트의 예상 위치를 추적하는데 사용된다.
우리가 보낼 수 있는 데이터의 총 크기가 제한 되어있다.
이더넷 프레임에서는 보통 1518바이트로 제한 되어 있는데,
우리는 보통 이것보다 훨씬 큰 데이터를 보내야 한다.
전송계층에서 TCP 는 이 모든 데이터를 세그먼트로 분할한다. 세그먼트 헤더에 시퀀스 번호는 이 특정 세그먼트 중 어느 세그먼트가 될 수 있는지 추적하기 위해 사용된다.
다음 필드는 승인번호다 이건 시퀀스 번호와 유시하다
승인 번호는 다음으로 오는 예상 세그먼트의 숫자다
다음은 데이터 오프셋 필드다
이 필드는 세그먼트 헤더의 길이를 전달하는 4비트 번호다
수신 네트워크 기기가 실제 데이터 페이로드의 시작점을 이해하도록 있는 필드다.
그 다음으론 6 비트의 TCP 제어 플래그를 위해 예약된 비트가 있다.
다음 필드는 TCP window 로 알려진 16비트가 있다.
TCP 윈도우는 보내기 전에 승인이 필요한 시퀀스 번호들의 범위를 나타낸다.
TCP 는 acknowledgement(인정?) 에 의존하는 프로토콜이다.
모든 예상된 데이터가 실제로 받아 졌는지 , 전송 device 가 수신 되지 않는 데이터를 보내는데
시간 낭비 하지 않게 하기 위해 있다.
다음 16비트는 체크섬이 있다.
수신자가 이 세그먼트를 모두 수집하면 전체 세그먼트에 걸쳐 체크섬을 계산하고
도중에 데이터가 손실된게 있는지 헤더에 체크섬과 비교를 한다.
Urgent pointer field 와 옵션필드는
현대에선 거의 사용되지 않는다.
옵션 필드는 복잡한 흐름제어 프로토콜에 쓰이긴한다.
그리고 마지막으로 페이로드 섹션이 예상 되는 위치 에서
0의 시퀀스에 불과한 padding 이 있다.
'프로그래밍 > 네트워크' 카테고리의 다른 글
[Coursera Google] The Transport Layer - connection , connectionless (0) | 2020.12.10 |
---|---|
[Coursera Google] The Transport Layer 2 (0) | 2020.12.10 |
[Coursera Google] The Network Layer - Routing (0) | 2020.12.07 |
[Coursera Google] The Network Layer - Subnetting (0) | 2020.12.06 |
[Coursera Google] The Network Layer (0) | 2020.12.06 |