4계층 이상의 상위 계층에서는 '데이터를 운반'하는 직접적인 동작이 아닌 전달할,전달된 데이터에 대해 필요한 처리를 하는 것이다.
4계층의 역할 - '신뢰성이 높은(에러가 적은) 데이터 전송을 하기'위한 처리를 한다. 에러복구.
> 에러복구 - 도달하지 않은 경우에 다시 보냄으로써 에러를 없었던 것으로 한다.
> 1. 데이터를 수신하면, 송신처에게 수신한것을 통지한다(확인응답) 2. 도중에 에러발생으로 데이터가 없어져 확인응답이 되돌아오지 않을 경우, 다시보냄으로써 에러를 복구한다. 신뢰성이 높은 통신을 위해서 에러를 복구하고 통신상태도 확인. 이것을 '흐름제어'라는 방식으로 수행한다. 처리능력을 넘어선 정보를 받았을때, 그것을 다 처리할 수 없어서 파기 해버리는 경우가 있다. 넘치는 것을 오버플로(over flow)라 하고 이것을 막는 것이므로 '흐름제어'라고 한다.
흐름제어 - 도달했을 때, 대기 장소에 데이터가 넘치는 것을 방지.
1. 수신처에 데이터를 보내면, 수신처는 데이터를 받아서 그것을 일시적으로 모아둔다. 그리고 준비되는 대로 처리한다.
2. 처리가 늦어지거나 송신 속도나 간격이 빠른 경우 데이터가 점점 쌓이기 때문에 결국에는 모아둘 수가 없게 되어 파기해버린다.(오버플로)
3. 그것을 방지하기 위해 수신측은 확인응답때에 모아둘 수 있는 데이터 양을 송신처에게 통지하여, 송신량을 가감하게 하거나 송신을 일시적으로 중지하게 한다.
TCP와 UDP
4계층에서는 이러한 '통신에 필요한 처리'를 하는데, TCP/IP에서 실제로 이런 제어를 수행하는 것이 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol). 둘 중 하나만 사용된다. (TCP의 장점이 UDP의 단점이고 TCP의 단점이 UDP의 장점이다.)
TCP - 정확,확실을 표어로 하는 프로토콜(커넥션, 흐름제어 등을 사용해서 확실하게 데이터를 송신)
> 커넥션 - TCP에서는 애플리케이션간의 데이터 송수신을 한다. 이 데이터의 길을 커넥션이라고 한다. 사전에 전용 통신로를 확보해 둠으로써 확실하게 데이터를 보내는 것. 가상적인 통신로.
커넥션 확립 - 상대가 데이터 전송을 허가해줘야 하는데 이때 쓰레웨이 핸드쉐이크와 세그먼트 분할이 사용 된다.
> 쓰리웨이 핸드쉐이크 - 3번의 데이터 송수신으로 쌍방향의 통신로를 확립한다 1. 통신할게 2. 좋아!이쪽에서도 할게! 3. 좋아!
> 세그먼트 분할 - TCP는 애플리케이션으로부터 받은 데이터(메시지)를 세그먼트로 캡슐화한다. 한개의 데이터를 MSS(Max Segment Size)로 분할하는데, 한개의 데이터가 복수의 세그먼트가 되는 것이다. 각각의 세그먼트에 번호를 부여하고 '시퀀스 번호'라고 한다.
> 시퀀스 번호 - 세그먼트에 포함되어 있는 데이터의 선두 옥텟에 붙여진 번호. 에러 복구할때 사용. 세그먼트를 수신하면 수신한것을 송신처에게 전달한다.(확인응답) 확인응답 번호는 다음에 받고싶은 데이터의 선두 옥텟번호이다. 시퀀스 번호로 세그먼트가 보내는 데이터가 전체의 어느부분에 해당하는지를 알수 있고 또 확인응답 번호로 다음에 받고싶은 데이터 번호를 알리는 것이다. 그렇게 해서 수신측이 어느데이터까지 받았는지를 알 수 있는 확실한 방법이다.
> 윈도우 제어 - 일단 수신한 데이터를 일시적으로 보관해 두기위해 버퍼가 있다. 버퍼사이즈를 전함으로써 송신할 수 있는 데이터 양을 알려준다.
TCP의 단점 - 확인응답을 기다리는 시간이 치명적. 윈도우 사이즈를 크게해도 확인응답 시간 필요.
포트번호 - 어느 애플리케이션이 송수신할지를 결정하는 번호. 각 컴퓨터 내부에는 통신 데이터를 흐르게 하기 위한 가상의 출입구가 있다. 각 애플리케이션은 그 중에 하나를 선택해서 데이터 송수신의 입구로 삼는 것이다.
UDP - 아무것도 하지 않는 프로토콜(확인응답, 흐름제어를 하지 않는다.) 단, 정확,확실하지 않다.
>장점-고속 용도-고속성, 즉 효율이 높다는 점을 살려서 고속성이나 실시간 송수신이 필요한 애플리케이션이나 동영상스트리밍배포 등에 사용.
> TCP는 상대를 모르면 송신할 수 없으므로 브로드캐스트 할 수 없다. UDP는 제어를 하지 않아 DHCP 등 브로드캐스트 가능.
사설IP주소 - 인터넷에 접속하지 않는 네트워크를 위해 사용할 수 있는 IP주소.
네트워크 주소변환(NAT) - 내부 네트워크에서 할당한 사설 IP주소를 글로벌 IP주소로 변환.
> 단점 - 글로벌 IP 주소의 수 만큼만 동시 접속할 수 있다. 보유한 글로벌 IP주소 수 이상의 호스트는 인터넷에 동시접속 불가능. 문제를 해결하고자 NAPT가 나옴.
NAPT(Network Address Port Translation) - 하나의 글로벌 IP 주소로 복수의 컴퓨터를 접속 가능. IP 주소 뿐만 아니라 포트 번호도 변환해서 복수의 컴퓨터 접속을 가능.
5~7계층은 TCP/IP 모델에서는 한개의 계층('애플리케이션 층)으로 취급. TCP/IP의 경우 통합해서 하나의 프로토콜이 된 경우가 많다. (예, HTTP)
> 5계층 세션계층 - 의논. 애플리케이션 간의 의논의 관리. 대화가 성립하도록 제어를 한다. '다이얼로그 제어'
> 다이얼로그 제어 - 데이터의 송수신을 세션으로 성립하도록 관리. '이번에는 이쪽에서 말할차례.들을차례' 등을 정한다.
> 6계층 표현계층 - 각각의 목적에 맞는 데이터 형식(문자, 영상, 동영상, 음성)에 맞게 관리. 변환을해서 하드웨어랑 OS에 따른 차이를 없앤 데이터 교환이 가능. 그 밖에도 압축, 암호화를 수행. 애플리케이션과는 동떨어진 데이터 형식의 전송을 위한 변환이 주된 역할.
> 7계층 응용계층 - 최상위 계층. 위에 애플리케이션만 있음. 즉, 애플리케이션을 위해 움직이는 계층. 애플리케이션의 목적에 따라 네트워크 서비스를 제공하는 계층. 각각의 목적에 따른 프로토콜이 준비되어 있다. 각각의 프로토콜에 따라 송수신하는 데이터의 형식이나 순서등이 정해져 있다. 애플리케이션의 네트워크 입구.
> 5,6,7 계층에 의해 '데이터 송수신관리', '데이터 형식', '네트워크 서비스'가 결정된다.