Imagine your network card is a house. That house has an address (IP address in this case) and to get into the house you need doors (ports). The house is pretty big so it has exactly 65,535 doors (ports). But because the owner of the house is not insane, most of the doors are locked (firewall).
When something communicates with you (or you with something), you use a port. For example when you open a webpage, your browser sends a request to the server on port 80 or 443 (80 for http, 443 for https). Those are standardized ports which have a well-defined meaning, but in general you only need the client (browser, app, whatever) and server to use the same port for the service.
Your IP address is like the main office number for your computer. The ports are like internal extension numbers.
When you're setting up a program and it's asking you what logical port it should use, It's asking you which extension it should be using. Just like if you were dealing with phone numbers and phone systems you have to give it a number that's not already in use, and it probably makes sense to give it a number that is known for that type of service.
Imagine the computer as a shopping mall, which has a name and address (i.e the IP address).
A port is a specific store in that mall, from were you can get specific things.
The analogy even holds further in that for certain "stores", the same store by name of certain chains (i.e. Burger King) will provide the same service in different malls if its present there (for example, port 80 is were the HTTP service is, by convention) and the same kind of service can be provided in other stores (nobody stops you from having an HTTP service on a different port).
Were the analogy breaks is that unlike with chain store names (which are protected by trademark) there really is no enforcement that a certain port has a certain service (i.e. you can put whatever service you want on port 80 of a computer you control) and certain services being in certain ports is merely a convention.
If you would compare a server to a building, with its own street address, then port would be an apartment number for every application (tenant) living there.
Ports are what allowing you to run multiple applications and all can communicate over the internet. Without ports you would need to have a dedicated computer for every application.
Imagine you need to go see your doctor. They work in a building with 65535 rooms. Some rooms are empty. Some rooms have people in them that provide different services. But you need your doctor so you look up their location.
You learn the building address (IP address) and the room number (port)
In practice, you attach services to specific ports so that other computers can access those services. Typically, http traffic is on port 80 and https is on port 443. So if you visit a website, you are likely connected to a server on one of those two ports. But it’s not a requirement. You could create a website and put it on port 2097, or 532, or 47210; it doesn’t matter.
A port is like an apartment number. Except instead of apartments, it’s just mailboxes. Bob’s mailbox is number 25. If you want to get a message to Bob, uou write “box 25” on the address.
A port number is just an additional piece of info that the operating system associates with a particular program. If something comes in on port 22, the sshd is going to handle it because it’s “listening on port 22”, meaning that it has registered itself with the OS as the recipient of anything that comes in marked “port 22”.
Additionally to all the correct answers, a 'port' can also mean something completely different 'in networking'.
It can be a physical socket in a network equipment, like 'Ethernet port'. Or it can be a virtual equivalent of such, e.g. when connecting virtual machines on a host - that could be called a 'logical port'.
Those can sometimes be used interchangeably with 'interface' or 'device', but it depends on convention used in particular system or environment.
One network interface has just one IP address, but it can have a bunch of different programs listening and talking.
A server might have both a webserver and a mail server running on the same machine - and they don't want each other's network traffic.
So you mark each packet with a destination port number, to let the server work out which program you're talking to.
Your web browser will mark all its packets with port 80 or port 443, and when the server gets those, it knows it's web traffic, and passes it to the webserver software.
Your email client will mark all its packets with port 25 or 993, and when the server gets those, it knows it's email traffic, and passes it to the mailserver software.
Typically each separate kind of network service will have its own well-known port number assigned to it.
There's also a source port field on packets, so that your computer can get return traffic back to the right program running on your machine.
A TCP packet has a segment for a numerical descriptor which is metaphorically referred to as a port. A lot of networking hardware and software filters based on that packet segment, or directs it to particular software registered as 'listening' for that number.