네트워크 구조는 두개로 나뉘어 진다.
한개의 서버에 여러개의 client가 접속하는 구조(대부분의 통신 방식) e.g) web server(HTTP), file server(FTP), application server
![<https://images.velog.io/images/tonyhan18/post/0e1e9a27-b878-4447-8cb1-1b3e71df1475/image.png>](<https://images.velog.io/images/tonyhan18/post/0e1e9a27-b878-4447-8cb1-1b3e71df1475/image.png>)
서버는 없고 client끼리 서로 통신하는 구조 e.g) bittorrent
![<https://images.velog.io/images/tonyhan18/post/c4576d5e-8534-4612-b42b-92898091d5f3/image.png>](<https://images.velog.io/images/tonyhan18/post/c4576d5e-8534-4612-b42b-92898091d5f3/image.png>)
IP로 쳤을때 우리가 원하는 사이트로 이동을 하지만 매번 IP로 이동하기에는 외우기 매우 어렵다. 그래서 IP를 Name으로 바꾸어 주는 Name Server가 존재한다. 인터넷 내부에 있는 name server(168.126.63.1)로 접속한다음 IP를 가지고 특정 URL에 접속하게 된다. 하지만 이렇게 하면 서버를 갔다 도메인으로 가는 귀찮은 구조이기 때문에 캐쉬를 사용하여서 이동한다.
서버에 접속하기 위해서는 IP address도 필요하지만 Port number도 필요하다. 서버용 컴퓨터가 여러가지 용도로 사용되기 때문에 IP address 하나에서 여러 용도를 사용하기 위해 구분이 필요하다. 그래서 Port numer가 따로 존재하여 기능을 구분해 준다. 16-bit integer로 구성되며 0 to 65535까지의 번호를 가지게 된다.
e.g) http(80), https(443), ftp(21), ssh(22), telnet(23)
그래서 client가 server에 접속시 IP address와 port number을 함께 보낸다.